service の使用を確認する簡単なコードを作成しました。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("msg","Service Started");
if(intent == null)
Log.w("msg","Service Intent NULL");
g = (GlobalVar) getApplicationContext();
try {
Thread thread = new Thread(new Job());
thread.start();
} catch (Exception ex) {
Log.e("msg", ex.getMessage());
}
return START_STICKY;
}
私のアクティビティには 2 つのボタンがあります。1 つのボタンはstartService(Intent intent)メソッドを使用してサービスを開始し、もう 1 つのボタンはstopService(Intent intent)メソッドを使用してサービスを停止します。1. startButton を押すと、Service Startedというメッセージが Logcat に出力されます。今回は Intent は null にはなりません。2. 次に、エミュレーターの[設定] > [アプリケーション] > [実行中のサービス] に移動し、サービスを見つけて停止します。msg Service Stoppedは、サービスのonDestroy()メソッドで記述したLogcat に出力されます。
ここが分からない部分です。
Android システムは数秒後にサービス自体を再起動しますが、今回はService Startedというメッセージは出力されません。ドキュメントには、インテントが null になると記載されています。しかし、msg Service Intent NULLも出力されません。
Android システムがサービスを再起動することをどのように知ることができますか?
サービスが開始するスレッドにいくつかのメッセージを出力しました。これらのメッセージは、エミュレーター設定からサービスを停止してから数秒後に、logcat で自動的に印刷を開始します。
これらの LogCat メッセージが出力されない理由はありますか?