Android LocationManager requestLocationUpdates in a Wearable



我想知道如何(如果可能的话)在一个短暂的服务中成功地为我的LocationManager运行requestLocationUpdates -在这种情况下是Android WearableListenerService

例如,我有一个服务,当可穿戴设备发送消息说它需要更新时运行。此更新的一部分是根据用户当前位置查询外部API的一些数据。如果没有从getLastKnownLocation返回"最后已知"的位置,我将从位置管理器注册requestLocationUpdates以获得设备的当前位置,然后将做我的事情。

然而,短命服务存在并且在位置管理器接收到位置更改事件之前被销毁,因此回调侦听器不会触发,或者我得到"在死线程上向处理程序发送消息"这样的错误。

我的问题是,我是否可以强制此服务或多或少阻塞,直到找到一个位置并且在退出(onDestroy)之前调用onLocationChanged回调触发?

或者,处理这个的适当/正确的机制是什么?

一种方法是在你的weararabelistenerservice中启动一个IntentService。在IntentService中,你可以在onHandleIntent()中发送你的位置请求,你可以阻塞它直到你得到你的响应(希望有一个超时);因为onHandleIntent是在工作线程上调用的,所以你不会引起任何问题。当你得到结果时,你可以更新你的可穿戴应用;这个方法看起来非常简单。

相关内容

  • 没有找到相关文章

最新更新