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