Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Geofences是否在删除/过期之前保持活动状态,还是仅在我的PendingEvent启动之前保持活动状态_Android_Google Play Services_Geofencing_Android Geofence_Location Client - Fatal编程技术网

Android Geofences是否在删除/过期之前保持活动状态,还是仅在我的PendingEvent启动之前保持活动状态

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

我将要用geofences实现一个特性,在我完成任何严肃的工作之前,我需要知道geofences在第一次转换后是否保持活动状态

该功能的核心是:

每次我在p点x米范围内(称为A区),我都希望执行行动B

我需要知道的是

  • 我是否只需要添加一个带有
    地理围栏的地理围栏。永不过期
    ,并确保每次进入指定区域时,无论经过多长时间、重新启动等,我都会得到一个挂起的

  • 我是否必须在退出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的情况。