Android – 为什么使用未决意图进行地理围栏

我刚刚完成了Android上的geofencing教程( http://developer.android.com/training/location/geofencing.html ),我想知道为什么地理围栏的“callback”是通过挂起的意图完成的,而不是简单的callback接口。

如果在一个活动中实现,那么通常会断开onPause()的位置客户端,所以之前添加的geofences不会在应用程序暂停/被销毁之后被跟踪,那么为什么还有待处理的意图呢? 还是我误解了?

Solutions Collecting From Web of "Android – 为什么使用未决意图进行地理围栏"

我不知道为什么地理围栏的“callback”是通过挂起的意图而不是简单的callback界面来完成的。

主要是因为geofences被devise成即使没有运行你的应用程序也能工作。

如果在一个活动中实现,那么通常会断开onPause()中的位置客户端,所以之前添加的geofences不会在应用程序暂停/被销毁之后被跟踪,那么为什么还有待处理的意图呢? 还是我误解了?

我相信你在这里弄错了。 实际上,geofences并不是专为直接触发UI而devise的,正如文档中所讨论的那样:

从定位服务发送的意图可以触发您的应用程序中的各种操作,但不应该让它启动一个活动或片段,因为组件应该只能响应用户操作而变得可见。

现在,您可以select说只有在前台进行活动时才使用地理围栏。 但是,您将不得不在onPause()删除这些地理围栏。 一个地理围栏将保持登记,直到其到期时间或手动删除,AFAICT。

这个答案可能已经过时 – 谷歌播放服务的准确性和可靠性已经从最初的版本中改变了很多。

我的一些经验与下面的geofencing。 首先 – 这种技术的主要优势是电池使用率非常低。 事实上,我不能注意到电池寿命的任何变化。 这真是令人印象深刻。 服务似乎只使用Wi-Fi和networking位置。 我没有注意到GPS运行。 我不能说,如果它只是隐藏的位置图标或真的不使用GPS。 准确性 – 这太可怕了。 根本没有发现20个圈区域,除了我的家庭范围外。 它看起来像整个位置圈,包括错误必须在围栏区内。 有时会检测到1000米的区域,并且延迟很大。 那些在开放区域进行的实验,Wi-Fi ap数量很less。 我仍然试图find真正可靠的设置脚下这项服务。 意图后,我想打开GPS位置,并在我自己的代码作出最后的方法。