フォアグラウンドサービスを実装しようとしていますが、クラッシュをどのように処理するかを理解しようとしています。
以下のような簡単なサービスを作成しました。
@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回ではなく、1回再起動するのですか?クラッシュするたびに再起動し続けたい。
私が心配しているのは、アプリケーションが実行されていて、どういうわけか2回クラッシュした場合、アプリケーションが再起動されないことです。
たとえば、最初に1回クラッシュし、1日か2日実行されてから再びクラッシュしますが、それは戻ってこないという意味ですか?