Местоположение извлекается, когда приложение убито и находится в фоновом режиме с использованием FusedLocationProviderClient с ожидающим намерением, но в нерегулярное время

Я использую FusedLocationProviderClient с ожидающим намерением. Я получаю местоположение, когда приложение активно. Но пока приложение переходит в фоновый режим или приложение закрывается, я получаю информацию о местоположении через нерегулярные промежутки времени, например, 2 минуты, 3 минуты, иногда 10 минут. Нужна помощь с этим?

Примечание. Также я ориентируюсь на Oreo.

мой код


comment
Это происходит из-за новой политики экономии заряда батареи. Проверьте ответ ниже.   -  person FonzTech    schedule 31.10.2018


Ответы (1)


Если вы хотите получать данные о местоположении, пока ваше приложение находится в фоновом режиме на Oreo или более поздних версиях, вы должны запустить службу переднего плана (или что-то подобное):

https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesForegroundService

С Oreo Google начал ограничивать действия приложений в фоновом режиме:

https://developer.android.com/about/versions/oreo/background

person Gavin Wright    schedule 31.10.2018
comment
Спасибо, @Gavin Wright, но я тоже не хочу получать уведомления. И моя минимальная версия SDK 15. Пожалуйста, предложите что-нибудь. - person Harsh Masand; 31.10.2018
comment
Возможно, это можно сделать с помощью JobScheduler, но вы можете столкнуться с проблемами, потому что получение местоположения каждые пару минут в фоновом режиме потребляет много батареи. Вот почему уведомление существует, чтобы информировать пользователя о чем-то, что сильно разряжает батарею. В любом случае, попробуйте, я думаю: title="как запускать планировщик заданий или службу каждую минуту без остановки"> stackoverflow.com/questions/47224219/ - person Gavin Wright; 31.10.2018
comment
JobScheduler предназначен для уровня API выше 21. Я полагаю, что тогда мне нужно использовать Диспетчер заданий Firebase. - person Harsh Masand; 31.10.2018