多次绑定同一个IntentService会创建一个请求队列吗?

时间:2015-02-03 06:10:29

标签: android service intentservice

我有一个LocationProvider课程Service。此LocationProvider类内部有一个LocationListener,可以检测位置坐标并启动IntentService,以便提供将位置坐标发送到GCM(Google Cloud Messaging)的进程队列。我可以通过调用startService()bindService()来启动IntentService。但我选择使用bindService(),因为我想预测一种情况,即当LocationProvider被销毁时,IntentService及其所有队列也将停止。我的问题是,多次绑定同一个IntentService也可以组成队列?因为我的请求再次启动一个intentservice,其中将位置发送到gcm逐个完成。

1 个答案:

答案 0 :(得分:1)

使用IntentService,所有请求都在一个工作线程上处理,但一次只处理一个请求。

因此,当许多客户端“绑定”到IntentService时,所有这些请求都在单个工作线程上处理。因此,工作线程可能需要花费尽可能多的时间来处理队列中的这些请求。

当然,这是IntentService(和工作线程)机制,它不会阻止应用程序的主循环,这总是可取的。

IntentService确保对传递给它的请求进行自动排队,因此如果后台线程正在处理一个请求,则其他命令会排队等待轮到他们。