了解前台服务生命周期

时间:2012-10-12 15:10:42

标签: android service

我正在尝试实现前台服务,而我正在尝试了解它如何处理崩溃。

我创建了一个简单的服务,如下面的那个:

@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);
    }
}

发生的情况是服务在前台启动,然后按预期崩溃。计划由系统重新启动。它会重新启动,然后再次崩溃,如预期的那样。之后,它不会安排重新启动。

我的问题是,为什么重启一次,但不是两次?我希望它在每次崩溃后继续重启。

我担心的是,如果我的应用程序正在运行,并以某种方式崩溃两次,那么它将永远不会重新启动。

例如,它在开始时崩溃一次,运行一两天再次崩溃,这是否意味着它不会再回来?

2 个答案:

答案 0 :(得分:0)

正如David在评论中所说,我尝试增加崩溃间隔,但它没有帮助。我相信android存储服务崩溃的次数,如果它崩溃2次,无论间隔时间,它都会停止重启它。我相信这是不同的当a​​ndroid取消内存服务时,我还没有让android为前台服务做。

答案 1 :(得分:0)

尝试在 return 语句中使用 StartSticky,它会起作用。 Android系统崩溃后会重启服务。