有没有简单的方法来确定某项服务是否处于活动状态?我做这个
boolean serviceWorking = false;
@Override
public void onCreate() {
serviceWorking = true;
}
@Override
public void onDestroy() {
serviceWorking = false;
stopSelf(startId);
}
但它不起作用。
最佳答案
关于正在运行的服务的信息由Android操作系统通过ActivityManager#getRunningServices提供。
所有使用onDestroy或onSometing事件或Binders或静态变量的方法都无法可靠地工作,因为作为开发人员,您永远不知道Android何时决定终止您的进程或是否调用了上述回调。
你可以在活动中编写这样的方法
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
使用以下命令调用它:
isMyServiceRunning(MyService.class)