0

我想每 5 分钟更新一次位置,直到应用程序的生命周期。我知道如何更新位置。我想知道的是 requestForLocation 是否是阻塞调用。

我可以在服务类中执行此操作,但服务仅在主线程上运行,并且服务可以随时被系统停止。我不希望这种情况发生。位置更新应该一直有效,直到应用程序在内存中。如果应用程序本身被杀死,那么显然服务也会被杀死。

实现这一点的方法应该是什么?

4

2 回答 2

2

我想知道的是 requestForLocation 是否是阻塞调用。

Android中没有名为requestForLocation()or的方法。requestForLocationUpdates()如果您的意思是requestLocationUpdates(),这不是阻塞呼叫。

我不希望这种情况发生。

用户和操作系统有权随时终止您的服务。在这种情况下,这是一件好事,因为您提出的计划浪费了 RAM 而没有任何好处。

实现这一点的方法应该是什么?

使用AlarmManager类似于 my 的服务LocationPoller,因此您可以获取您的位置数据,对其进行处理,然后关闭,直到下一个周期到来。

此外,请允许您的用户配置轮询周期,包括“不轮询”选项。

于 2011-08-16T12:34:26.360 回答
0

出于某种原因,这个requestLocationUpdates()电话确实会阻塞,至少在我测试过的手机品牌中是这样。修复它的方法是使用它的重载之一。请在另一篇文章中查看此答案。

于 2022-02-11T15:47:55.637 回答