Использование IntentService для прослушивания местоположения, но onDestroy вызывается сразу после onHandleIntent

#android #android-intent #android-service #android-location #android-lifecycle

#Android #android-намерение #android-сервис #android-location #android-жизненный цикл

Вопрос:

Я использую IntentService для прослушивания обновлений местоположения GPS, поэтому он запустится, когда пользователь завершит действие. IS отправляет местоположение в сообщении обработчику действия.

Проблема в том, что когда пользователь нажимает кнопку «Остановить отслеживание», уведомление в строке состояния с надписью «отслеживание …» все еще присутствует, потому что оно создано в IntentService. Поэтому я переопределил onDestory (), чтобы я мог вызывать:

 mNotificationManager.cancel(TRACKING);
  

Но проблема в том, что когда я реализую onDestroy (), он вызывается сразу после onHandleIntent . Если я удалю свой код переопределения onDestroy (), то он вызывается не сразу и работает нормально, отправляя местоположения обратно в действие, которое будет отображаться на экране.

Есть идеи, почему onDestroy () вызывается немедленно, если я его реализую, но не если я этого не делаю?

Я здесь в замешательстве.

Спасибо всем,

Бесконечный фурор

Ответ №1:

Хорошо, теперь я разобрался с этим, я не должен был использовать IntentService, вместо этого использовал Service и поместил всю функциональность в onStartCommand (), и теперь все работает.

Извините всех, что потратили ваше время :-/

Бесконечный фурор

Комментарии:

1. Здесь нет отходов, возможно, кто-то совершает ту же ошибку и находит решение в вашем ответе.