Требуется объяснение процедуры активации Geofence?

Итак, я создал геозону, как показано ниже:

    GeofenceModel modelExit = new GeofenceModel.Builder("id_oi_456")
                .setTransition(Geofence.GEOFENCE_TRANSITION_DWELL)
                .setExpiration(Geofence.NEVER_EXPIRE)
                .setLatitude(40.414341)
                .setLongitude(49.928548)
                .setRadius(CLIENT_GEOFENCE_RADIUS)
                .build();


    SmartLocation.with(this).geofencing()
                .add(modelExit)
                .start(this);

Я запускаю этот код один раз, он срабатывает при нахождении внутри геозоны (как и ожидалось). Затем я удаляю фрагмент и перезапускаю проект. Но на этот раз геозона не срабатывает, даже если я установил NEVER_EXPIRE. Итак, в основном я хочу знать, где хранятся геозоны. Если они хранятся вне памяти приложения, то почему «удаление фрагмента» очищает геозону?


person Farid    schedule 02.06.2017    source источник
comment
Пожалуйста, ознакомьтесь с моим ответом на связанный вопрос, так как я думаю, что это поможет уточнить все случаи, которые вам нужно обработать, чтобы повторно -регистрировать геозоны.   -  person Michael Krause    schedule 08.08.2018


Ответы (1)


Я думаю, что это работает, как задумано. Проект, который будет запущен повторно, будет считать приложение новой установкой. Как указано в документации — Используйте рекомендации по геозоне:

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

  • Устройство перезагружается. Приложение должно отслеживать завершение загрузки устройства, а затем повторно регистрировать необходимые геозоны.
  • Приложение удаляется и устанавливается заново.
  • Данные приложения очищены.
  • Данные сервисов Google Play очищены.
  • Приложение получило предупреждение GEOFENCE_NOT_AVAILABLE. Обычно это происходит после отключения NLP (поставщик сетевого местоположения Android).

Надеюсь это поможет.

person Mr.Rebot    schedule 02.06.2017