Android Geofences是否在删除/过期之前保持活动状态,还是仅在我的PendingEvent启动之前保持活动状态
我将要用geofences实现一个特性,在我完成任何严肃的工作之前,我需要知道geofences在第一次转换后是否保持活动状态 该功能的核心是: 每次我在p点x米范围内(称为A区),我都希望执行行动B 我需要知道的是Android Geofences是否在删除/过期之前保持活动状态,还是仅在我的PendingEvent启动之前保持活动状态,android,google-play-services,geofencing,android-geofence,location-client,Android,Google Play Services,Geofencing,Android Geofence,Location Client,我将要用geofences实现一个特性,在我完成任何严肃的工作之前,我需要知道geofences在第一次转换后是否保持活动状态 该功能的核心是: 每次我在p点x米范围内(称为A区),我都希望执行行动B 我需要知道的是 我是否只需要添加一个带有地理围栏的地理围栏。永不过期,并确保每次进入指定区域时,无论经过多长时间、重新启动等,我都会得到一个挂起的 或 我是否必须在退出A区后重新注册此地理围栏,以便在下次进入A区时得到通知 我希望前者是正确的好的建议是第一个。如果您创建了一个带有标志NEV
- 我是否只需要添加一个带有
,并确保每次进入指定区域时,无论经过多长时间、重新启动等,我都会得到一个挂起的地理围栏的地理围栏。永不过期
- 我是否必须在退出A区后重新注册此地理围栏,以便在下次进入A区时得到通知
我希望前者是正确的好的建议是第一个。如果您创建了一个带有标志NEVER_EXPIRE(永不过期)作为过期时间的地理围栏,那么当它被触发时(通过进入或退出),您不必重新注册它。我100%确信这一点,我现在刚刚完成了关于geofence的POC编码和测试 从文档中,删除地理围栏的唯一方法是达到到期时间或由设备本身删除 有效期 土工围栏应保持活动的时间。一旦 到达过期时间后,Location Services将删除地理围栏。 大多数情况下,您应该指定过期时间,但您可以 希望为用户的家或工作场所保留永久性地理围栏 要停止地理围栏监视,请删除地理围栏本身
请记住,如果应用程序未卸载geofence,则即使在用户卸载应用程序后,“永不过期”也会导致注册geofence。没有办法移除这些。曾经所以他们会继续耗尽电池电量。因此,建议设置过期时间,并再次设置地理围栏,以防它们在您希望它们过期之前过期。建议在这种情况下“所有已注册的地理围栏都将被删除”(即当用户禁用其手机设置时)
请注意:该文档顶部警告“此类已弃用。请使用LocationServices。”尽管无论您进入/退出地理围栏多少次,您都将获得挂起的意图(转换),但关键是设备重新启动将删除所有地理围栏。因此,在设备重新启动的情况下,您必须使用广播接收器重新注册所有地理围栏(通过共享首选项保存),并设置意图过滤器操作 android.intent.action.BOOT_已完成 及许可:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
在AndroidManifest.xml中
此外,请记住,即使Google Play服务被终止+重新启动/升级,但如果您清除其数据,系统也会恢复Geofenses。“仅在需要时重新注册地理围栏”一节中也提到了这一点
另请注意,如果用户切换或关闭位置/gps设置,所有地理围栏将被移除,并由提供的待定意图生成意图。在这种情况下,hasError()api将返回true,getErrorCode()api将返回GEOFENCE\u NOT\u AVAILABLE。我100%确信这一点,谢谢@MarcelI通常会在有人说“我100%确信这一点”时感到害怕……不管怎样,它都会起作用我们现在生活在一个多蒂·马塞尔的时代,如果我将过期时间设置为1小时,1小时后它会调用onExit或其他东西吗?这是一个非常有效的观点,但我想知道为什么它会以这种方式实现。如果卸载app X,我们可以肯定地知道,将不会有任何内容可用于服务pendingent。我想知道这是不是一只虫子。。。看起来确实如此。。。一旦你从你的设备上卸载我的应用程序,你的手机上就没有剩余的业务了。@hajons文档中的什么地方有吗?你怎么知道这些围栏在卸载后仍会保留?这似乎不是真的,因为上面说,卸载并重新安装应用程序时,你必须重新注册geofences。我知道文档中说了一件事,但这并不意味着它就是这样工作的。在撰写本文时,我的答案是正确的,并经过测试验证。从那时起,我假设它已经被修复。请看,因为我相信它应该涵盖所有您应该根据文档重新注册GeoFence的情况。