Android 已启动服务,具有位置服务的处理程序线程 Api

Android Started Service, Handler Thread with Location Services Api

在我的应用场景中,我想在应用的整个生命周期中保持 Started Service。在此服务中,我必须使用 FusedLocationProviderClientLocationServices api 来请求位置更新(确切地说,在 onStartCommand 方法中)。每当收到新的“location update”时,更新后的位置将保存到PreferenceManager.

当用户从应用程序注销时,我将停止此 Started Service

我是否需要在新的 HandlerThread 中处理这个位置更新逻辑(你知道,因为 Started Service 在主线程上运行)?

在我看来,由于 FusedLocationProviderClient.requestLocationUpdates(来自 LocationServices Api)方法是非阻塞调用并且基于异步编程模型,我认为 HandlerThread 将不需要我的场景。

P.S. 我参考了 GoogleSample。在该示例中,他们演示了绑定服务,该服务也已启动(未绑定客户端时不会结束)。他们也没有实现 HandlerThread 获取位置更新的实际逻辑。

这取决于您在 "new location" 事件触发时执行的操作。

您是否进行繁重的处理或网络调用? -> 单独的线程。你会做只需要几毫秒的简单事情吗? -> 您 运行 在这些线程中的哪一个并不重要。