0

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 メッセージが出力されない理由はありますか?

4

1 に答える 1