Я создаю приложение, которое должно отслеживать местоположение, даже когда приложение находится в фоновом режиме. В основном я использую игровые сервисы GoogleApiClient и LocationServices.FusedLocationApi.requestLocationUpdates метод для вызова IntentService.
Следующий код, как я запускать обновления местоположение на фоне в моей деятельности:Android 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). Как я могу это сделать?
Спасибо. Это был бы правильный звонок, но откуда мне его назвать? Есть ли какой-либо ответ на вызов жизненного цикла, чтобы вызвать его из Activity/Application/IntentService, когда приложение завершено? – BeFree
это зависит от того, где вы хотели его остановить. Подцепите кнопку, услугу onDestroy или где хотите. –
Я до сих пор не полностью понял это, извините ... Итак, usecase выглядит так: пользователь запускает приложение, в первом сеансе активности я начинаю обновление местоположения на фоне. Когда пользователь нажимает левую кнопку Android и уничтожает процесс - есть ли у меня обратный вызов? Что-то вроде Application.onDestroy? Потому что именно тогда мне захочется удалитьLocationUpdates - в противном случае обновления местоположения будут работать даже при том, что пользователь полностью удалил приложение ... – BeFree