【发布时间】:2020-09-12 04:28:25
【问题描述】:
我想知道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;
}
它工作正常,但 manager.getRunningServices() 已从 API 26 中弃用。那么我们是否有另一个好的解决方案(方法)来获取当前正在运行的服务列表?
【问题讨论】:
-
看来你不需要任何
isServiceAlive()方法 -
@pskink 为什么,我需要它只是在我的代码中,这个方法用一行下划线,我是一个完美主义者想要删除这行
-
@pskink 当我单击按钮时我的服务启动(这里是带有计时器的推送通知)如果我反复单击按钮或在关闭和启动应用程序后,我的计时器工作不正确。这个方法解决了我的问题
-
所以您的服务有问题,而不是您的活动,请参阅groups.google.com/forum/#!topic/android-developers/jEvXMWgbgzE、
We deliberately don't have an API to check whether a service is running because, nearly without fail, when you want to do something like that you end up with race conditions in your code.- 这是一位 android 开发团队成员所说的 -
@MakhanovMadiyar 做一个完美主义者不是重点。此功能在下次更新后可能无法使用 - 因此最好为 API >= 26 和 API 创建解决方案