我想知道一个 Activity 是否成功启动了一个IntentService
.
由于可以绑定IntentService
通孔bindService()
以使其保持运行,因此一种方法可能是检查调用是否startService(intent)
导致调用服务对象onStartCommand(..)
或onHandleIntent(..)
在服务对象中。
但是我怎样才能在活动中检查呢?
我想知道一个 Activity 是否成功启动了一个IntentService
.
由于可以绑定IntentService
通孔bindService()
以使其保持运行,因此一种方法可能是检查调用是否startService(intent)
导致调用服务对象onStartCommand(..)
或onHandleIntent(..)
在服务对象中。
但是我怎样才能在活动中检查呢?
这是我用来检查我的服务是否正在运行的方法。Sercive 类是 DroidUptimeService。
private boolean isServiceRunning() {
ActivityManager activityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(Integer.MAX_VALUE);
if (serviceList.size() <= 0) {
return false;
}
for (int i = 0; i < serviceList.size(); i++) {
RunningServiceInfo serviceInfo = serviceList.get(i);
ComponentName serviceName = serviceInfo.service;
if (serviceName.getClassName().equals(DroidUptimeService.class.getName())) {
return true;
}
}
return false;
}
您可以在构造时添加一个标志PendingIntent
,如果返回值为null
,则您的服务未启动。提到的标志是PendingIntent.FLAG_NO_CREATE
.
Intent intent = new Intent(yourContext,YourService.class);
PendingIntent pendingIntent = PendingIntent.getService(yourContext,0,intent,PendingIntent.FLAG_NO_CREATE);
if (pendingIntent == null){
return "service is not created yet";
} else {
return "service is already running!";
}
我想知道一个Activity是否成功启动了一个IntentService。
如果您在调用 时未在活动或服务中遇到异常startService()
,则说明IntentService
已启动。
因为可以通过 bindService() 绑定 IntentService 以使其保持运行
为什么?
这是我用来检查我的服务是否正在运行的方法:
public static boolean isMyServiceRunning(Class<?> serviceClass, Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return service.started;
}
}
return false;
}