アプリがバックグラウンドにある場合でも位置追跡を維持する必要があるアプリを構築しています。基本的に、再生サービスのGoogleApiClientおよびLocationServices.FusedLocationApi.requestLocationUpdatesメソッドを使用してIntentServiceを呼び出しています。
次のコードは、アクティビティのバックグラウンドで位置情報の更新をトリガーする方法です。
private void startLocationUpdatesOnBackground() {
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(1000)
.setFastestInterval(1000);
pendingIntent = PendingIntent.getService(this, 0,
new Intent(this, LocationBackgroundService.class), PendingIntent.FLAG_UPDATE_CURRENT);
LocationServices.FusedLocationApi.
requestLocationUpdates(mGoogleApiClient, mLocationRequest, pendingIntent);
}
それはうまくいきます。ただし、アプリがユーザーによって (タスク マネージャーを介して) 終了された場合、このIntentService (LocationBackgroundService と呼ばれる)
を停止したいと考えています。どうやってやるの?