Android Geofences是否在删除/过期之前保持活动状态,或者直到我的PendingIntent启动为止

时间:2013-07-24 09:23:17

标签: android google-play-services geofencing android-geofence location-client

我即将实施地理围栏的功能,在我完成任何认真的工作之前,我需要知道在第一次过渡后地理围栏是否仍然有效。

该功能的核心是:

  

每次 我在点P的x米范围内(称之为区域A ),我想行动B < / em>发生。

我需要知道的是

  • 我是否只需要在Geofence.NEVER_EXPIRE添加地理围栏,并确保每次 我都会获得PendingIntent 我无论过去都会进入指定区域时间,重新启动等

  • 我退出A区后是否需要重新注册此地理围栏才能在下次进入 A区时收到通知?

我希望前者是这样的

4 个答案:

答案 0 :(得分:9)

好的主张是第一个。如果使用标记NEVER_EXPIRE作为到期时间创建地理围栏,则在触发(通过进入或退出)时不必重新注册它。我100%肯定这一点,我现在刚刚完成编码和测试关于地理围栏的POC。

从文档中,删除地理围栏的唯一方法是达到过期时间或者设备本身将其删除。

  

到期时间

     

地理围栏应保持多长时间。一旦   达到到期时间,位置服务删除地理围栏。   大多数情况下,您应该指定到期时间,但您可以   希望为用户的家或工作地点保留永久性地理围栏。

     

要停止地理围栏监控,请自行删除地理围栏

答案 1 :(得分:6)

请记住,即使在用户卸载应用程序后,NEVER_EXPIRE也会导致地理围栏注册,以防应用程序卸载它们。没有办法删除这些。永远。所以他们会继续耗尽电池。因此,建议设置过期时间并再次设置地理围栏,以防它们在您希望它们到期之前到期。

答案 2 :(得分:1)

请注意,&#34;所有注册的地理围栏将被删除&#34;在THIS情况下(即当用户禁用位置是他的手机设置时)。

建议:在文档的顶部是警告&#34;不推荐使用此类。使用LocationServices。&#34;

答案 3 :(得分:1)

虽然无论您进入/退出地理围栏的次数如何,您都会获得待处理意图(转换),但问题是设备重启会删除所有地理围栏。因此,如果设备重启,您必须使用广播接收器再次重新注册所有地理围栏(您可以通过共享首选项保存)并设置意图过滤器操作

  

android.intent.action.BOOT_COMPLETED

和许可:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
AndroidManifest.xml中的

另请注意,即使Google Play服务被杀死+重新启动/升级,系统也会恢复地理位置,但如果您清除其数据则不会。 {&#34}部分的developer docs中也提到了同样的情况;仅在需要时重新注册地理围栏&#34;

另请注意,如果用户切换OR关闭位置/ gps设置,将删除所有地理围栏,并通过提供的待处理意图生成意图。在这种情况下,hasError()api将返回true,getErrorCode()api将返回GEOFENCE_NOT_AVAILABLE。