Android - 为什么要使用挂起意图进行地理围栏

Flo*_*Flo 7 android geofencing android-pendingintent

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

如果在活动中实现,通常会断开位置客户端的连接onPause(),因此在应用程序暂停/被销毁后,以前添加的地理围栏也不会被跟踪,那么为什么会有未决的意图呢?或者我错了?

Com*_*are 18

我想知道为什么geofences的'回调'是通过挂起的意图而不是简单的回调接口完成的.

主要是因为地理围栏设计为即使没有运行应用程序也可以工作.

如果在一个活动中实现,通常会在onPause()中断开位置客户端,因此在应用程序暂停/被销毁后,以前添加的地理围栏也不会被跟踪,那么为什么一个未决的意图呢?或者我错了?

我相信你错了.事实上,geofences专门不是为直接触发UI而设计的,如文档所述:

从位置服务发送的Intent可以在您的应用程序中触发各种操作,但您不应该让它启动活动或片段,因为组件只应在响应用户操作时变得可见.

现在,您可以选择说您只想在前台进行活动时使用地理围栏.但是,您必须删除这些地理围栏onPause().地理围栏将在到期时间之前保持注册状态或手动删除,AFAICT.

  • 在我的测试中,如果我的应用程序被杀,Google的示例代码就停止了工作.所以我切换到广播接收器而不是IntentService,然后后台监控按预期工作.http://stackoverflow.com/questions/19505614/android-geofence-eventually-stop-getting-transition-intents/19521823#19521823 (2认同)