我的应用程序有一个前台服务,它必须一直运行并且永不停止。虽然我对其进行了几次测试,但似乎在 3-4 天后,Android 决定停止它,并且不再重新启动它,并且在我的 Activity 中,我检查了该服务是否正在运行,如果它没有启动它。即使服务没有启动,我也无法调试它,因为这不会立即发生。这是我的支票,有什么问题吗?
if (!isMyServiceRunning(MyService.class)) {
startService(new Intent(this, MyService.class));
}
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;
}
我在 Activity 的 onResume() 中调用了这个检查,我不能每次在 Activity 启动时都运行它,因为我在服务中有一个不断运行的 Thread,如果启动多次,它将获得多个实例。 .
所以这就是我想要的:要么有更可靠的方法来检查服务是否正在运行,要么在每次活动启动时启动服务,以防止出现问题,并且其中的线程必须始终只有 1 个实例(我有已经声明为静态)