安卓系统的地理围栏在重启后还能存活吗?

问题描述 投票:15回答:3

是系统将它们持久化,还是我必须在重启后再次添加它们?我在文档中没有找到任何关于这个问题的信息,请问是什么原因?https:/developer.android.comtraininglocationgeofencing.html。

android geofencing android-geofence
3个回答
19
投票

Geofences不会在重启后持续存在。

你必须监听 BOOT_COMPLETED 动作并再次添加geeofences。

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


5
投票

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

我的设置如下。

  • 运行应用程序
  • 应用程序仅在第一次启动时将各种地理区域设置为NEVER_EXPIRE。
  • 退出应用
  • 在有围栏的地区使用电话
  • 确认栅栏触发待定的意图,并将其发送到IntentService。
  • 离开区域
  • 重新启动手机
  • 重新进入区域
  • 未完成的意图不会被发送到IntentService。

如果有谁从谷歌的人那里得到更多的信息,请评论!


-1
投票

你想坚持的数据是什么?是您设备中的地理围栏区域还是Google Play Service位置API存储的地理围栏区域?

我相信设备需要向Google Play服务注册一个区域(由其经纬度和半径定义)(通过定位客户端)。你还需要提供到期时间,你想被通知的转换类型,以及你将被通知的意图。

这个区域将被存储(远程),而不是在你的App中。当它过了到期时间,Google Play服务会自动删除它。您也可以将其设置为NEVER_EXPIRE.如果该区域尚未过期,Google Play服务将通知您的App(通过您在调用addGeofences时发送的意图)。

区域的来源(纬度、经度、半径)由你来实现。

© www.soinside.com 2019 - 2024. All rights reserved.