15

系统是保留它们还是我必须在重新启动后再次添加它们?我在https://developer.android.com/training/location/geofencing.html的文档中没有找到任何相关信息

4

3 回答 3

19

地理围栏不会在重新启动时持续存在。

您必须监听BOOT_COMPLETED操作并再次添加地理围栏。

注意:如果您的应用程序安装在外部存储(SD 卡)上,您将永远不会收到 Boot Complete 操作。所以你必须android:installLocation="internalOnly"manifest tag. 这是因为,android 设备会在设置外部存储之前广播 BOOT_COMPLETED 动作。

于 2013-12-04T05:08:17.310 回答
5

我还没有找到任何证实这一点的文档,但我自己的实验表明它们不会在重新启动后持续存在。

我的设置如下:

  • 运行应用程序
  • 应用程序在首次启动时设置各种地理围栏仅作为 NEVER_EXPIRE
  • 退出申请
  • 在有围栏的区域使用电话
  • 确认栅栏触发发送到 IntentService 的待处理意图
  • 离开地区
  • 重启手机
  • 重新进入区域
  • 未决意图不会发送到 IntentService

如果有人从 Google 的某个人那里获得更多信息,请发表评论!

于 2013-10-17T04:26:17.557 回答
-1

您要保留哪些数据?是您设备中的地理围栏区域还是 Google Play 服务位置 API 存储的地理围栏区域?

我相信设备需要向 Google Play 服务(通过 LocationClient)注册一个区域(由其纬度、经度和半径定义)。您还需要提供到期时间、要通知的转换类型以及通知您的 Intent。

该区域将(远程)存储在您的应用程序中。当它超过过期时间时,Google Play Service 会自动删除它。您也可以将其设置为 NEVER_EXPIRE。如果该区域尚未过期,Google Play 服务将通知您的应用程序(通过您在调用 addGeofences 时发送的意图)。

区域的来源(纬度、经度、半径)取决于您的实施。

于 2013-07-02T01:26:11.737 回答