我想知道如何(如果可能的话)在短期服务中为我的requestLocationUpdates
成功运行LocationManager
- 在这种情况下是Android WearableListenerService
。
例如,我有一个服务,当可穿戴设备发送消息说它需要更新时运行。此更新的一部分是根据用户的当前位置查询外部API以查找某些数据。如果没有"最后知道"位置从getLastKnownLocation
返回我正在从位置管理员处注册requestLocationUpdates
以获取设备的当前位置,然后将完成我的工作。
但是,短期服务存在并在位置管理器收到位置更改事件之前被销毁,因此回调监听器不会触发,或者我得到"sending message to a Handler on a dead thread" errors like this。
我的问题是,我是否可以强制此服务或多或少阻止,直到找到一个位置并且onLocationChanged
回调在调用退出(onDestroy
)之前触发?
或者,处理此问题的正确/正确机制是什么?
答案 0 :(得分:-1)
一种方法是从WearableListenerService中启动IntentService。在IntentService中,您可以在onHandleIntent()中发送您的位置请求,并且您可以阻止它,直到您收到您的响应(希望超时);因为onHandleIntent是在工作线程上调用的,所以你不会引起任何问题。当您收到结果后,您可以更新可穿戴应用;这种方法看起来非常简单。