Геозоны в фоновом режиме - PullRequest
       43

Геозоны в фоновом режиме

0 голосов
/ 29 октября 2019

Вопрос при запуске: как я могу добавлять / удалять геозоны без открытия приложения?

Когда пользователь отключает местоположение, все геозоны удаляются. Когда была введена геозона, я тестировал ее и смог добавить / удалить геозоны в фоновом режиме, обработав "android.location.PROVIDERS_CHANGED" трансляцию, сохранив этот код на ветке.

В настоящее время, начиная с API26, эта трансляция не запускается при установкев манифесте нам нужно зарегистрироваться (и отменить) для этого действия, например, во время выполнения Activity или Service. И это не решение для моего случая, я хочу снова добавить геозоны при включении местоположения или просто запретить удаление уже добавленного.

Я вижу два решения для этого случая, но оба имеют некоторые недостатки ...

  1. Служба Foreground - липкая служба, которая добавляет / удаляет геозоны, когда местоположение включается / выключается, Service может получать PROVIDERS_CHANGED. Но мне не нравится прикрепленный Notification подарок всегда только для этой тривиальной цели ...
  2. Работа / работа - проверка состояния местоположения и на основе результатов добавление / удаление геозон, в конце перепланируйте собственный экземплярнапример, в течение 1 часа и снова. Короткоживущие службы (максимум 5 секунд) не должны иметь «визуального представления» - Activity на переднем плане или прикрепленного Notification - но нескольких секунд достаточно для проверки состояния местоположения и работы с геозонами (просто логика, такая красивая)быстро)

Я не тестировал второй подход, но, похоже, это своего рода обходной путь, наверняка очень неэффективный. Я хочу быть честным, я информирую пользователей о назначении «прослушивания» в фоновом режиме при запросе разрешения (также ACCESS_BACKGROUND_LOCATION по API29). Так что я могу сделать, чтобы сохранить эти заборы живыми, когда приложение находится в фоновом режиме / убито?

1 Ответ

0 голосов
/ 29 октября 2019

ForegroundService - лучший вариант, который у вас есть, на сегодняшний день существует много пользовательских ПЗУ, которые убивают приложение, которое находится в фоновом режиме. Я использовал foregroundService для той же цели, и он отлично работает.

...