仅在需要时重新注册地理围栏

fer*_*spr 5 android android-geofence

根据Android地理围栏文档,如果发生以下情况,应重新注册地理围栏:

  • 设备重启。

解决方案:添加地理围栏时,应用程序应在内部存储地理围栏(SharedPreferences)。然后侦听设备的启动完成操作,然后重新注册存储的地理围栏。

  • 该应用程序已卸载并重新安装。

解决方案:用户应再次创建地理围栏或将其远程存储,然后在应用程序首次打开时进行检索。

  • 该应用程序的数据已清除。

解决方案:用户应再次创建地理围栏或将其远程存储,然后在应用程序首次打开时进行检索。


但是,在以下情况下,我不知道该怎么办,请您指教?

  • Google Play服务数据已清除。我如何发现这种情况?

  • 该应用程序已收到GEOFENCE_NOT_AVAILABLE警报。通常会在禁用NLP(Android的网络位置提供程序)后发生。不确定在哪里收到此“警报”

fer*_*spr 0

我发现没有办法检测Google Play服务数据被清除的情况,所以我只是在应用程序打开时请求新的地理围栏。

正如@Sagar 提到的,GEOFENCE_NOT_AVAILABLE 在转换服务中被接收。当位置被禁用时会收到此消息。为了解决这个问题,我在每次请求时都会保存地理围栏(使用 SharedPreferences),然后我有一个 BroadcastReceiver 来检测何时再次启用位置。我在这里重新加载保存的地理围栏。

谢谢。