Android:如何检查服务是否正在运行?
有没有简单的方法来确定某项服务是否处于活动状态?我这样做Android:如何检查服务是否正在运行?,android,service,Android,Service,有没有简单的方法来确定某项服务是否处于活动状态?我这样做 boolean serviceWorking = false; @Override public void onCreate() { serviceWorking = true; } @Override public void onDestroy() { serviceWorking = false; stopSelf(startId); } 但
boolean serviceWorking = false;
@Override
public void onCreate() {
serviceWorking = true;
}
@Override
public void onDestroy() {
serviceWorking = false;
stopSelf(startId);
}
但它不起作用。我指的是:
我指的是:
Android操作系统通过ActivityManager#getRunningServices提供有关运行服务的信息。 所有使用onDestroy或onSometing事件、binder或静态变量的方法都无法可靠地工作,因为作为开发人员,您永远不知道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;
}
Android操作系统通过ActivityManager#getRunningServices提供有关运行服务的信息。 所有使用onDestroy或onSometing事件、binder或静态变量的方法都无法可靠地工作,因为作为开发人员,您永远不知道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;
}
发布完整的代码,发布完整的代码,如果您使用注释链接而不是post会更好如果您使用注释链接而不是post会更好由于getRunningServices已被弃用,此解决方案在Android O中不再有效。现在,它将只返回调用者自己的服务名称。
getRunningServices
现在已被弃用,不建议使用它。由于getRunningServices已被弃用,该解决方案在Android O中不再有效。它现在将只返回调用者自己的服务名称。getRunningServices
现在已被弃用,不建议使用它
isMyServiceRunning(MyService.class)