Вопрос при запуске: как я могу добавлять / удалять геозоны без открытия приложения?
Когда пользователь отключает местоположение, все геозоны удаляются. Когда была введена геозона, я тестировал ее и смог добавить / удалить геозоны в фоновом режиме, обработав "android.location.PROVIDERS_CHANGED"
трансляцию, сохранив этот код на ветке.
В настоящее время, начиная с API26, эта трансляция не запускается при установкев манифесте нам нужно зарегистрироваться (и отменить) для этого действия, например, во время выполнения Activity
или Service
. И это не решение для моего случая, я хочу снова добавить геозоны при включении местоположения или просто запретить удаление уже добавленного.
Я вижу два решения для этого случая, но оба имеют некоторые недостатки ...
- Служба Foreground - липкая служба, которая добавляет / удаляет геозоны, когда местоположение включается / выключается,
Service
может получать PROVIDERS_CHANGED
. Но мне не нравится прикрепленный Notification
подарок всегда только для этой тривиальной цели ... - Работа / работа - проверка состояния местоположения и на основе результатов добавление / удаление геозон, в конце перепланируйте собственный экземплярнапример, в течение 1 часа и снова. Короткоживущие службы (максимум 5 секунд) не должны иметь «визуального представления» -
Activity
на переднем плане или прикрепленного Notification
- но нескольких секунд достаточно для проверки состояния местоположения и работы с геозонами (просто логика, такая красивая)быстро)
Я не тестировал второй подход, но, похоже, это своего рода обходной путь, наверняка очень неэффективный. Я хочу быть честным, я информирую пользователей о назначении «прослушивания» в фоновом режиме при запросе разрешения (также ACCESS_BACKGROUND_LOCATION
по API29). Так что я могу сделать, чтобы сохранить эти заборы живыми, когда приложение находится в фоновом режиме / убито?