Android: продолжайте прослушивать обновления местоположения

#android #location

#Android #Расположение

Вопрос:

Я хочу продолжать прослушивать обновления местоположения, даже когда мое приложение уничтожено (или закрыто), должен ли я запускать службу для этого? и какова наилучшая практика для непрерывного обновления местоположения, кроме тех, которые описаны здесь.

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

1. Ну, вы, вероятно, хотите что-то сделать с результатом? Что вы пытаетесь сделать, когда местоположение меняется? Хранить это где-нибудь? Запустить намерение?

2. Вероятно, отправьте его на сервер, используя http post.

3. Тогда вам понадобится служба, и вам понадобится WAKE_LOCK. Я должен упомянуть, что это приведет к значительному разряду батареи.

4. я знаю! вот почему я пытаюсь найти лучший способ не разряжать батарею.

Ответ №1:

Если ваше приложение уничтожено операционной системой, оно ничего не сделает. Действия и службы могут быть отключены операционной системой, если это необходимо. Кроме того, если вы не запросите WAKE_LOCK, вы также не будете получать обновления, если телефон перейдет в спящий режим.

Сказав это, да, вы хотите создать, Service который реализует locationListener и соответствующим образом реагирует на onLocationChanged() . Таким образом, приложение по-прежнему будет получать обновления в фоновом режиме.

Ответ №2:

Еще лучше, вы можете использовать это: public void addProximityAlert (двойная широта, двойная долгота, плавающий радиус, длительный срок действия, намерение PendingIntent)

Намерение будет запущено, даже если приложение не запущено через широковещательную передачу. Запустите широковещательный serviceintent для запуска вашего кода. Служба умрет, когда это будет сделано.

Ответ №3:

Да, использование сервиса — единственный безопасный способ постоянно отслеживать местоположение после уничтожения вашего приложения. Может оказаться полезным сохранить информацию о вашем местоположении в базе данных SQLite или плоском файле для считывания информации о местоположении обратно, поскольку привязка к службам может занять некоторое время.