我长期以来一直在处理Android上的位置,但最近我决定更多地关注PendingIntents来处理更新。从文档中,我试图理解边缘情况,主要是,如果我的应用程序被系统或用户关闭的力量终止,我的请求会发生什么。遗憾的是,文档对此并不十分详细,因此我创建了一个测试应用程序..
令我惊讶的是,如果我使用PendingIntent请求位置更新,然后终止我的应用,则我的请求未被取消。这意味着,如果我启动GPS请求,然后决定将我的应用程序从"最近"列表,即使我的应用程序不再运行,GPS仍将继续尝试永久锁定(或直到设备重启)。我甚至试过强制停止没有帮助的应用程序,然后手动停止仍然在缓存进程列表中的进程,但令我沮丧的是,甚至没有能够停止请求! / p>
我知道,当更新可用时,我的应用程序的进程可能仍会重新启动,因为我的接收器已在清单级别注册,但令我惊讶的是我希望位置管理器终止我的请求据我所知,在这些情况下,我无法在我的应用程序之后清理。
我的意思是:
我总是可以事先在闹钟管理器上设置超时但是这是错误的,请求应该停止我的应用程序,而不是在一段时间后,在没有充分理由的情况下浪费电池。此外,对于GPS,事先很难总是指定超时,并且随着连续更新请求,它变得不可能。如果我确实得到了更新,那么我可以检查我的应用程序是否在此期间没有被杀,然后停止请求..但如果我在内部场景中从未获得类似GPS的更新,我该怎么办?
有没有人找到适当/标准的方法来处理这种情况?
在Nexus 5 w / 4.4.2
上测试更新:
我仍然无法解决此问题,并且发现以前版本的Android(Galaxy Nexus 4.3)行为相同。如果我使用PendingIntent方法请求位置更新,如果我强制停止我的应用程序,我的请求就不会停止。