【发布时间】:2011-04-14 04:42:05
【问题描述】:
我有一个安卓应用程序。根据用户当前的地理位置,我想在后台获取一些远程数据并存储。我的实现是:
在特定的时间间隔,警报会启动我的服务。服务使用匿名类查询当前位置并注册一个 locationListener 回调。在调用 onLocationChanged() 时,我启动从服务器获取远程数据。
但是,一旦我的服务完成使用匿名类注册位置侦听器,它就会按预期返回;因为它不会在完成之前等待回调发生。由于回调需要一些时间并在服务已经返回时进行调用,所以它会抛出一个错误:
java.lang.RuntimeException: Handler{43e82510} sending message to a Handler on a dead thread
这很好理解。现在对我来说一个快速的解决方法是我可以使用 locationManager 中的 getLastKnownLocation ,因为它不会通过回调响应;但是如果我现在确实想要最新的位置,在服务中而不是活动中怎么办?如何等待回调发生并停止我的服务返回。
另外,lastKnownlocation 什么时候更新?每次 GPS 注册一个新位置时;它会更新吗?我想知道的是,如果它不是最新的,它仍然可以关闭到最新吗?因为我没有在 android 模拟器中看到用于配置后续更新之间的时间段的选项。
非常感谢任何帮助。 干杯
【问题讨论】:
标签: android service geolocation locationlistener