【发布时间】:2019-05-14 14:58:05
【问题描述】:
我想检查我的服务是否正在运行, 我正在使用下面的代码,它在牛轧糖之前工作正常,但在 OREO 中不能工作
private boolean isMyServiceRunning(Class<?> serviceClass, Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
Log.d(TAG, "isMyServiceRunning: " + service.service.getClassName());
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
但以上代码不适用于前台服务。
我已经推荐了this,但它也不起作用..
【问题讨论】:
-
从 Nougat 开始,服务不会在后台运行一段时间,它会被系统自动停止,请使用 Job Scheduler 尝试 JobService。
-
不是重复的@Adam
-
他们都在问如何检查前台服务是否正在运行@amin。另外,您为什么要检查服务是否正在运行?如果是启动或创建一个,那么this solution将很有用。
-
不,此解决方案在自定义操作系统中没有帮助,这永远不会有帮助。我已经在许多设备上进行了尝试,并最终确定天气服务是否正在运行。这和你想的完全不同。 @亚当
标签: android performance service foreground-service