我想每 5 分钟更新一次位置,直到应用程序的生命周期。我知道如何更新位置。我想知道的是 requestForLocation 是否是阻塞调用。
我可以在服务类中执行此操作,但服务仅在主线程上运行,并且服务可以随时被系统停止。我不希望这种情况发生。位置更新应该一直有效,直到应用程序在内存中。如果应用程序本身被杀死,那么显然服务也会被杀死。
实现这一点的方法应该是什么?
我想知道的是 requestForLocation 是否是阻塞调用。
Android中没有名为requestForLocation()
or的方法。requestForLocationUpdates()
如果您的意思是requestLocationUpdates()
,这不是阻塞呼叫。
我不希望这种情况发生。
用户和操作系统有权随时终止您的服务。在这种情况下,这是一件好事,因为您提出的计划浪费了 RAM 而没有任何好处。
实现这一点的方法应该是什么?
使用AlarmManager
类似于 my 的服务LocationPoller
,因此您可以获取您的位置数据,对其进行处理,然后关闭,直到下一个周期到来。
此外,请允许您的用户配置轮询周期,包括“不轮询”选项。
出于某种原因,这个requestLocationUpdates()
电话确实会阻塞,至少在我测试过的手机品牌中是这样。修复它的方法是使用它的重载之一。请在另一篇文章中查看此答案。