0

私はAlarmManagerを使用して、バックグラウンドジョブを実行するために1分ごとにサービスを開始します。私は `stopSelf()`を呼ぶべきでしょうか?

Intent intent = new Intent(context, PostLocationService.class); 
    PendingIntent pendingIntent = PendingIntent.getService(context, POST_LOCATION_REQUEST_CODE, intent, 0); 

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

    alarmManager.setInexactRepeating(
      AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      SystemClock.elapsedRealtime() + TEN_SECONDS_INTERVAL, 
      ONE_MINUTE_INTERVAL, pendingIntent); 

PostLocationServiceServiceを拡張:ここ

は、コードスニペットです。 onStartCommand()私は仕事をして、stopSelf()に電話をします。

しかし、このサービスがまだ実行されている場合は、次回受信意向でonStartCommand()が再度実行され、必要なジョブが実行されることがわかります。

ここでベストプラクティスは何ですか:1分ごとに新しいサービスを開始するか、1つのサービスを継続して実行し、インテントを待っていますか?

+0

私の答えが追加されました。詳細を知りたい場合はお知らせください。 –

答えて

0

IntentServiceを使用して、迅速なバックグラウンドタスクを実行します。

IntentServiceは、オンデマンドで非同期要求(インテントとして表現)を処理するサービスの基本クラスです。クライアントはstartService(インテント)コールを通じて要求を送信します。必要に応じてサービスが開始され、ワー​​カースレッドを使用して各インテントが順番に処理され、作業が終了するとサービスが停止します。

+0

つまり、あなたの投票は、仕事が終わった後にサービスを停止することですか? –

関連する問題