多次绑定同一个 IntentService 会创建一个请求队列吗?
Do binding a same IntentService many times will create a queue of request?
我有一个 class LocationProvider
扩展 Service
。这个 LocationProvider class 内部有一个 LocationListener,它可以检测位置坐标并启动 IntentService,以便提供一个进程队列来将位置坐标发送到 GCM (Google Cloud Messaging)。我可以通过调用 startService()
或 bindService()
来启动 IntentService。但我选择使用 bindService(),因为我喜欢预料到当 LocationProvider 被销毁时,IntentService 及其所有队列也会停止的情况。我的问题是,多次绑定同一个 IntentService 也可以创建队列吗?为此,我在重新启动时提出了一个 intentservice,其中一个一个地向 gcm 发送位置。
使用 IntentService,所有请求都在单个工作线程上处理,但一次只会处理一个请求。
因此,当许多客户端 "bind" 到 IntentService 时,所有这些请求都在单个工作线程上处理。因此,工作线程可能需要尽可能多的时间来处理队列中的这些请求。
当然,这是 IntentService(和工作线程)机制,它不会阻塞应用程序的主循环,这总是可取的。
IntentService 确保传送给它的请求自动排队,因此如果后台线程正在处理一个请求,其他命令会排队等待轮到它们。
我有一个 class LocationProvider
扩展 Service
。这个 LocationProvider class 内部有一个 LocationListener,它可以检测位置坐标并启动 IntentService,以便提供一个进程队列来将位置坐标发送到 GCM (Google Cloud Messaging)。我可以通过调用 startService()
或 bindService()
来启动 IntentService。但我选择使用 bindService(),因为我喜欢预料到当 LocationProvider 被销毁时,IntentService 及其所有队列也会停止的情况。我的问题是,多次绑定同一个 IntentService 也可以创建队列吗?为此,我在重新启动时提出了一个 intentservice,其中一个一个地向 gcm 发送位置。
使用 IntentService,所有请求都在单个工作线程上处理,但一次只会处理一个请求。
因此,当许多客户端 "bind" 到 IntentService 时,所有这些请求都在单个工作线程上处理。因此,工作线程可能需要尽可能多的时间来处理队列中的这些请求。
当然,这是 IntentService(和工作线程)机制,它不会阻塞应用程序的主循环,这总是可取的。
IntentService 确保传送给它的请求自动排队,因此如果后台线程正在处理一个请求,其他命令会排队等待轮到它们。