我正在尝试实现前台服务,而我正在尝试了解它如何处理崩溃。
我创建了一个简单的服务,如下面的那个:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
checkRunningAndStartForeground();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
crashAfterTenSeconds();
}
@Override
public void onDestroy {
super.onDestroy();
if(isRunning) {
isRunning = false;
stopForeground(true);
}
}
发生的情况是服务在前台启动,然后按预期崩溃。计划由系统重新启动。它会重新启动,然后再次崩溃,如预期的那样。之后,它不会安排重新启动。
我的问题是,为什么重启一次,但不是两次?我希望它在每次崩溃后继续重启。
我担心的是,如果我的应用程序正在运行,并以某种方式崩溃两次,那么它将永远不会重新启动。
例如,它在开始时崩溃一次,运行一两天再次崩溃,这是否意味着它不会再回来?
答案 0 :(得分:0)
正如David在评论中所说,我尝试增加崩溃间隔,但它没有帮助。我相信android存储服务崩溃的次数,如果它崩溃2次,无论间隔时间,它都会停止重启它。我相信这是不同的当android取消内存服务时,我还没有让android为前台服务做。
答案 1 :(得分:0)
尝试在 return 语句中使用 StartSticky,它会起作用。 Android系统崩溃后会重启服务。