4

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

我创建了一个简单的服务,如下所示:

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

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

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

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

比如一开始就崩溃一次,运行一两天再崩溃,是不是就不会再回来了?

4

2 回答 2

0

正如大卫在评论中建议的那样,我尝试增加崩溃间隔,但没有帮助。我相信android会存储服务崩溃的次数,如果它崩溃2次,无论间隔如何,它都会停止重新启动它。我相信这与 android 杀死内存服务时不同,我还没有让 android 为前台服务做这件事。

于 2012-10-16T18:51:21.357 回答
0

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

于 2021-05-01T09:50:16.727 回答