Android - getRunningservices(ActivityManager) 已弃用

2022-09-01 06:14:01

我想知道是否有效?MyService.java

我创建这个方法:

private boolean isServiceAlive(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;
}

它工作正常,但已从API 26弃用。那么,我们是否有另一个好的解决方案(方法)来获取当前正在运行的服务的列表?manager.getRunningServices()


答案 1

尽管它没有回答您的问题,但我认为您仍然可以将此方法用于您自己的服务:

为了向后兼容,它仍将返回调用方自己的服务。

如果您只想删除弃用警告,请使用@SuppressWarnings("deprecation")


答案 2

欢迎来到安卓O

Android Oreo的另一个烦人错误,只有不推荐使用的注释,没有其他方法可以做到这一点。但也许在过去,Android开发人员决定创建替代功能。

现在,正如文档所说,继续使用并使用上面的函数来摆脱警告。getRunningServices@SuppressWarnings("deprecation")

截至Build.VERSION_CODES。O,此方法不再可用于第三方应用程序。为了向后兼容,它仍将返回调用方自己的服务。


推荐