3
我試圖實現前臺服務,並試圖瞭解它如何處理崩潰。瞭解前臺服務生命週期
我創建了一個簡單的服務類似下面的一個:
@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);
}
}
什麼情況是,服務在前臺開始,然後崩潰,符合市場預期。這是計劃由系統重新啓動。如預期的那樣,它重新啓動並再次崩潰。之後,它不會重新啓動。
我的問題是,它爲什麼重新啓動一次,但不是兩次?我希望它在每次崩潰後繼續重新啓動。
我擔心的是,如果我的應用程序正在運行,並以某種方式崩潰兩次,那麼它將永遠不會重新啓動。
例如,它在開始時崩潰一次,運行一兩天又崩潰,這是否意味着它不會回來?
警告:我沒有閱讀過Android的源代碼,所以我只是在這裏猜測 - Android在崩潰後自動重新啓動您的服務。如果您的服務在啓動時總是崩潰,那麼Android不會希望繼續重新啓動它。爲了防止「開始 - 崩潰 - 開始 - 崩潰...」的無限循環,Android可能會記住您的服務崩潰並且不會重新啓動。我會想象你的服務每10秒崩潰就會觸發這種行爲。嘗試每10分鐘崩潰一次,看看它是否工作不同。 –