Android 已启动服务,具有位置服务的处理程序线程 Api
Android Started Service, Handler Thread with Location Services Api
在我的应用场景中,我想在应用的整个生命周期中保持 Started Service
。在此服务中,我必须使用 FusedLocationProviderClient
和 LocationServices api
来请求位置更新(确切地说,在 onStartCommand
方法中)。每当收到新的“location update”时,更新后的位置将保存到PreferenceManager
.
当用户从应用程序注销时,我将停止此 Started Service
。
我是否需要在新的 HandlerThread
中处理这个位置更新逻辑(你知道,因为 Started Service 在主线程上运行)?
在我看来,由于 FusedLocationProviderClient.requestLocationUpdates
(来自 LocationServices Api)方法是非阻塞调用并且基于异步编程模型,我认为 HandlerThread
将不需要我的场景。
P.S. 我参考了 GoogleSample。在该示例中,他们演示了绑定服务,该服务也已启动(未绑定客户端时不会结束)。他们也没有实现 HandlerThread 获取位置更新的实际逻辑。
这取决于您在 "new location" 事件触发时执行的操作。
您是否进行繁重的处理或网络调用? -> 单独的线程。你会做只需要几毫秒的简单事情吗? -> 您 运行 在这些线程中的哪一个并不重要。
在我的应用场景中,我想在应用的整个生命周期中保持 Started Service
。在此服务中,我必须使用 FusedLocationProviderClient
和 LocationServices api
来请求位置更新(确切地说,在 onStartCommand
方法中)。每当收到新的“location update”时,更新后的位置将保存到PreferenceManager
.
当用户从应用程序注销时,我将停止此 Started Service
。
我是否需要在新的 HandlerThread
中处理这个位置更新逻辑(你知道,因为 Started Service 在主线程上运行)?
在我看来,由于 FusedLocationProviderClient.requestLocationUpdates
(来自 LocationServices Api)方法是非阻塞调用并且基于异步编程模型,我认为 HandlerThread
将不需要我的场景。
P.S. 我参考了 GoogleSample。在该示例中,他们演示了绑定服务,该服务也已启动(未绑定客户端时不会结束)。他们也没有实现 HandlerThread 获取位置更新的实际逻辑。
这取决于您在 "new location" 事件触发时执行的操作。
您是否进行繁重的处理或网络调用? -> 单独的线程。你会做只需要几毫秒的简单事情吗? -> 您 运行 在这些线程中的哪一个并不重要。