系统是保留它们还是我必须在重新启动后再次添加它们?我在https://developer.android.com/training/location/geofencing.html的文档中没有找到任何相关信息
3 回答
地理围栏不会在重新启动时持续存在。
您必须监听BOOT_COMPLETED操作并再次添加地理围栏。
注意:如果您的应用程序安装在外部存储(SD 卡)上,您将永远不会收到 Boot Complete 操作。所以你必须android:installLocation="internalOnly"
在manifest tag
. 这是因为,android 设备会在设置外部存储之前广播 BOOT_COMPLETED 动作。
我还没有找到任何证实这一点的文档,但我自己的实验表明它们不会在重新启动后持续存在。
我的设置如下:
- 运行应用程序
- 应用程序在首次启动时设置各种地理围栏仅作为 NEVER_EXPIRE
- 退出申请
- 在有围栏的区域使用电话
- 确认栅栏触发发送到 IntentService 的待处理意图
- 离开地区
- 重启手机
- 重新进入区域
- 未决意图不会发送到 IntentService
如果有人从 Google 的某个人那里获得更多信息,请发表评论!
您要保留哪些数据?是您设备中的地理围栏区域还是 Google Play 服务位置 API 存储的地理围栏区域?
我相信设备需要向 Google Play 服务(通过 LocationClient)注册一个区域(由其纬度、经度和半径定义)。您还需要提供到期时间、要通知的转换类型以及通知您的 Intent。
该区域将(远程)存储在您的应用程序中。当它超过过期时间时,Google Play Service 会自动删除它。您也可以将其设置为 NEVER_EXPIRE。如果该区域尚未过期,Google Play 服务将通知您的应用程序(通过您在调用 addGeofences 时发送的意图)。
区域的来源(纬度、经度、半径)取决于您的实施。