下面列出了android.app.ActivityManager#RunningServiceInfo ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public VParceledListSlice<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags, int userId) {
synchronized (mHistory) {
List<ActivityManager.RunningServiceInfo> services = new ArrayList<>(mHistory.size());
for (ServiceRecord r : mHistory) {
if (r.process.userId != userId) {
continue;
}
ActivityManager.RunningServiceInfo info = new ActivityManager.RunningServiceInfo();
info.uid = r.process.vuid;
info.pid = r.process.pid;
ProcessRecord processRecord = findProcessLocked(r.process.pid);
if (processRecord != null) {
info.process = processRecord.processName;
info.clientPackage = processRecord.info.packageName;
}
info.activeSince = r.activeSince;
info.lastActivityTime = r.lastActivityTime;
info.clientCount = r.getClientCount();
info.service = ComponentUtils.toComponentName(r.serviceInfo);
info.started = r.startId > 0;
}
return new VParceledListSlice<>(services);
}
}
/**
* 判断某个服务是否正在运行的方法
*
* @param context
* @param serviceName 是包名+服务的类名(例如:net.loonggg.testbackstage.TestService)
* @return true 代表正在运行,false代表服务没有正在运行
*/
public static boolean isServiceWork(Context context, String serviceName) {
boolean isWork = false;
ActivityManager myAM = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> myList = myAM.getRunningServices(30);
if (null == myList || myList.isEmpty()) {
return false;
}
for (int i = 0; i < myList.size(); i++) {
String mName = myList.get(i).service.getClassName();
if (mName.equals(serviceName)) {
isWork = true;
break;
}
}
return isWork;
}
/**
* Get the PSS used by the process hosting a service.
*
* @param packageName Package name of the service to search for.
* @return the PSS in kB of the process hosting a service, or INVALID_PSS.
*/
@VisibleForTesting
static int getPssForService(ComponentName componentName) {
if (componentName == null) return INVALID_PSS;
Context context = ContextUtils.getApplicationContext();
ActivityManager activityManager =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> services =
activityManager.getRunningServices(1000);
if (services == null) return INVALID_PSS;
int pid = -1;
for (ActivityManager.RunningServiceInfo info : services) {
if (componentName.equals(info.service)) {
pid = info.pid;
break;
}
}
if (pid == -1) return INVALID_PSS;
Debug.MemoryInfo infos[] = activityManager.getProcessMemoryInfo(new int[] {pid});
if (infos == null || infos.length == 0) return INVALID_PSS;
return infos[0].getTotalPss();
}
/**
* 用来判断服务是否运行.
* @param context
* @param className 判断的服务名字
* @return true 在运行 false 不在运行
*/
public static boolean isServiceRunning(Context mContext, String className) {
boolean isRunning = false;
ActivityManager activityManager = (ActivityManager) mContext
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> serviceList = activityManager
.getRunningServices(100);
if (!(serviceList.size() > 0)) {
return false;
}
for (int i = 0; i < serviceList.size(); i++) {
if (serviceList.get(i).service.getClassName().equals(className) == true) {
isRunning = true;
break;
}
}
return isRunning;
}
/**
* whether the service is running.
*/
public static boolean isServiceRunning(Context context, String className) {
boolean isRunning = false;
ActivityManager activityManager
= (ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> servicesList
= activityManager.getRunningServices(Integer.MAX_VALUE);
for (ActivityManager.RunningServiceInfo si : servicesList) {
if (className.equals(si.service.getClassName())) {
isRunning = true;
}
}
return isRunning;
}
static boolean isMediaPlayerServiceRunning(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (manager != null) {
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MediaPlayerService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
}
return false;
}
public static boolean isMyServiceRunning(Context context, Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
private boolean isServiceRunning(Class<?> serviceClass) {
String TAG = serviceClass.getSimpleName();
String serviceTag = serviceClass.getSimpleName();
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
Utils.logDebug(TAG, "Is already running");
return true;
}
}
Utils.logDebug(serviceTag, "Is not running");
return false;
}
public static boolean isMyServiceRunning(Context context, Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
/**
* Checks the specified service is running.
* @param service
* @param context
* @return
*/
public static boolean isServiceRunning(Class<? extends Service> service, Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo runningServiceInfo : manager.getRunningServices(Integer.MAX_VALUE)) {
if (service.getName().equals(runningServiceInfo.service.getClassName())) {
return true;
}
}
return false;
}
public static boolean isRunning(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (SMSReceiverService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
public static boolean isRunning(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (NotificationService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
/***
* Check if Aerlink's main service is running
* @return boolean indicating if the service is running or not
*/
public boolean isServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MainService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
public static boolean isAnalyzerServiceRunning() {
ActivityManager manager = (ActivityManager) RunStore.getContext().getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (PassiveService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
private boolean isServiceRunning(int uid, String name) {
List<ActivityManager.RunningServiceInfo> serviceList = ((ActivityManager)getSystemService
(Context.ACTIVITY_SERVICE)).getRunningServices(Integer.MAX_VALUE);
for(ActivityManager.RunningServiceInfo info: serviceList) {
if(info.uid == uid) {
return true;
}
}
return false;
}
public boolean isRunning() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo rsi : am.getRunningServices(Integer.MAX_VALUE)) {
String pkgName = rsi.service.getPackageName();
if (pkgName.equals(Constans.ALIPAY_PACKAGE)) {
if (rsi.process.equals(Constans.ALIPAY_PACKAGE)) {
return true;
}
}
}
return false;
}
private boolean isServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
static String isAlive(Service candidate) {
if (candidate == null)
return "Service reference null";
ActivityManager manager = (ActivityManager) candidate.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> services = manager.getRunningServices(Integer.MAX_VALUE);
if (services == null)
return "Could not retrieve services from service manager";
for (ActivityManager.RunningServiceInfo service : services) {
if (candidate.getClass().getName().equals(service.service.getClassName())) {
return null;
}
}
return "Service stopped";
}
private void setupMockServiceStopped() {
ActivityManager manager = mock(ActivityManager.class);
ArrayList<ActivityManager.RunningServiceInfo> runningServices = new ArrayList<ActivityManager.RunningServiceInfo>();
ActivityManager.RunningServiceInfo info = new ActivityManager.RunningServiceInfo();
info.service = new ComponentName(MainService.class.getPackage().getName(),GPSStatus.class.getName());
runningServices.add(info);
when(manager.getRunningServices(Integer.MAX_VALUE)).thenReturn(runningServices);
when(_mockContext.getSystemService(getContext().ACTIVITY_SERVICE)).thenReturn(manager);
}
private boolean isServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}