如何检查后台服务(在Android上)是否正在运行?
我想要一个能够切换服务状态的Android活动 - 它可以让我打开它,如果它打开则关闭.
升级到Android 8后,我的应用程序的某些功能已经破坏,甚至没有明确定位到API 26.特别是,用于检查服务是否正在运行的良好旧函数(如此处的StackOverflow中所述:如何检查服务是否在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;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题getRunningServices是现在已经弃用,并且不再返回正在运行的服务.有没有人在Android 8上遇到过这个问题?有没有官方解决方案(或黑客)?我还应该指出,我想要查找的服务与调用的代码不在同一个进程/应用程序中isMyServiceRunning()(由于向后兼容性原因,仍提供该功能)