有没有简单的方法来确定某项服务是否处于活动状态?我做这个

    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)

09-04 05:32