我的应用程序有一个前台服务,它必须一直运行并且永不停止。虽然我几次测试它,但似乎在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()中调用了这个检查,并且我不能每次在活动开始时运行它,因为我在服务中有一个不断运行的Thread,如果启动了几个将获得多个实例倍...
所以这就是我想要的: 如果服务正在运行,要么有更可靠的方法来检查服务 要么 只需在每次活动开始时启动服务,以防止出现问题,并且其中的线程必须始终只有1个实例(我已经声明为静态)
答案 0 :(得分:1)
当Bindable
开始/恢复时,您可以提供服务Activity
并将Activity
绑定到服务。这样您就可以确保服务正在运行。但我认为您的服务有问题。我要求您发布有关该服务的更多信息?操作系统杀死没有痕迹的前台服务是不正常的。