Ответ 1
Несколько предложений:
-
Убедитесь, что вы используете BroadcastReceiver, а не службу для получения переходов, иначе вы не сможете/не сможете ее получить, если ваше приложение будет убито/выключено. Как обсуждалось здесь: Android Geofence в конечном итоге перестает получать намерения перехода
-
Удостоверьтесь, что вы восстановили свои геофорумы после перезагрузки устройства, предпочтительно используя приемник для загрузки. Как обсуждалось здесь: Сохраняют ли Geofences в андроиде после перезагрузки устройства
-
Еще одно распространенное заблуждение, которое меня тошнило, так как оно отличается от IOS, заключается в том, что вы всегда получите триггер сразу для вновь созданного геообъекта, если устройство обнаруживает, что вы находитесь внутри геозоны при его создании, Я решил это сам, используя "льготный период" для вновь созданных геообъектов, которые я объяснил в этой теме: addProximityAlert не работает должным образом
Наконец, одна важная вещь: Наличие вашего LocationClient, подключенного в вашем приложении, или не , не имеет значения, если вы следуете приведенным выше пунктам. Мой процесс добавления или удаления Geofences в моем коде в основном:
-
Создайте и подключите locationclient.
-
В соединении-обратном вызове добавьте/удалите геозонность (ы)
-
В обратном вызове geofence-result отключите locationclient.
Каждый раз, когда это происходит, мой клиент местоположения подключается всего на несколько секунд. Операционная система по-прежнему будет получать предупреждения о геозонности и вызывать мой BroadcastReceiver всякий раз, когда они происходят.
Если вы сделаете это, я уверен, ваш опыт улучшится.
Надеюсь, это поможет!