【发布时间】:2014-12-13 09:20:06
【问题描述】:
我的应用程序有一个前台服务,它必须始终运行并且永不停止。虽然我对其进行了几次测试,但似乎在 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()中调用了这个check,我不能每次启动时都运行它,因为我在服务中有一个不断运行的线程,如果启动几个它会得到多个实例次...
这就是我想要的: 如果服务正在运行,要么有更可靠的方法来检查服务 或者 每次活动启动时只需启动服务,以防止出现问题,其中的线程必须始终只有 1 个实例(我已经声明为静态)
【问题讨论】:
标签: android android-service thread-sleep foreground-service