アプリのバックグラウンドで長時間実行するタスクがあるため、サービスを実装してジョブを実行しようとしています。
このサービスはLocationClientインスタンスからの位置データを使用し、各リクエストは PendingIntent で起動されます。最小ターゲット バージョンでは、新しい LocationServices を使用できません。Android のドキュメントでは、アプリケーションがシステムによって強制終了された可能性があるため、LocationClient.requestLocationUpdates(...) メソッドの PendingIntent バージョンを使用するようにアドバイスされています。
同様の説明に一致する私が見たすべての例 は、IntentService を実装し、インテント KEY_LOCATION_CHANGED を余分に受け取る onHandleIntent(Intent intent) をオーバーライドします。ただし、 Service にはそのようなメソッドはなく、そのようなインテントは onStartCommand(...) に配信されません。
このコードは、位置データのリクエストを設定するために使用され、LocationRequester オブジェクトから取得されます (一度に実行されるこれらのオブジェクトの数に制限はありませんが、1 つだけが生成されてリクエストを行った場合の結果は同じです)。
Intent intent = new Intent(context, MyLocationService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
locationClient.requestLocationUpdates(someLocationRequest, pendingIntent);
上記のコードで MyLocation*Intent*Service を使用すると、インテントが MyLocationIntentService.onHandleIntent(intent) に配信され、KEY_LOCATION_CHANGED エクストラを探します。サービスに変更を加えた後、位置データを使用する方法がわかりません。リクエストが行われたときに LocationClient が接続されていることを確認しました。
onStartCommand(...) を監視しようとしましたが、インテントが配信されません。私の質問は、サービスの実装で位置データをどのように使用するのですか?
不明な点やさらに詳しい情報が必要な場合は、お知らせください。ありがとう!