2016-01-13 6 views
0

Я реализую Geo-ограждения. Он работает достаточно хорошо, но события перехода только активируются, когда приложение находится в фоновом режиме или на переднем плане. У меня есть IntentService, который принимает события переходов geo-fences, но моя проблема в том, что эта служба намерения получает обновления только в том случае, если приложение запущено.Реализация Geo-fencing - получение событий перехода гео-ограждений, когда приложение не работает

Реализация имеет стандартную систему LocationService для управления геообъектами при запуске приложения, а затем IntentService, который уведомляется ОС при обнаружении перехода географа.

У вас есть решение для получения переходов, даже если приложение не работает вообще?

спасибо.

ответ

0

Я нашел решение по official documentation.

Рекомендуемый радиус мин должен быть между 100 до 150 метров, особенно если вы используете PRIORITY_LOW_POWER или PRIORITY_BALANCED_POWER_ACCURACY в запросе местонахождения.

Проблема была в том, что я сохранил гео-ограждения на устройстве с очень небольшим радиусом (например, 20 метров), и в этом случае устройство не обнаружило события перехода к геограну вообще, когда приложение (не в фоновом режиме и переднем плане).

1

Intent service Предполагается запустить рабочий поток, обработать все, что вы планируете сделать, а затем закрыть сам. В вашем случае, когда приложение работает, служба в основном запускается, работает и затем отключается.

От андроида Docs

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

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

Checkout diff between Intent Service and Service

P.S: Если вы предоставили некоторый код, который вы пробовали один непосредственно может показать вам, Что именно не делает ваш код, выполняемый, когда приложение не запущено.