a)如果我的代码调用startService()
两次,是否按照我调用它的顺序处理Intent,或者它们是否可以随机切换?
b)第二次通话开始之前第一次完成onStartCommand()
,或者它们可能并行运行吗?
我已阅读android services guide和参考资料。虽然它们清楚地显示了IntentService
工作线程是如何序列化的,但我发现很少有关于如何传递和处理Intent的信息。
答案 0 :(得分:2)
如果我的代码调用startService()两次,是否会按照我调用的顺序处理Intent,还是可以随机切换它们?
Service
在这方面的行为没有记录,最后我查了一下。但是,应根据实际发生的情况按照发布的顺序调用它们。
在第二次调用开始之前第一次运行onStartCommand()会完成,还是可以并行运行?
这取决于你。默认情况下,在主应用程序线程上调用onStartCommand()
上的Service
,因此一次只处理一个命令。如果您选择将线程从onStartCommand()
分叉到处理命令,那么这些线程可以并行运行。
虽然他们清楚地显示了IntentService工作线程是如何序列化的,但我发现很少有关于如何传递和处理Intent的信息。
IntentService
维护自己的主题。您实施onHandleIntent()
而不是onStartCommand()
(或可能除此之外)onHandleIntent()
。由于只有一个线程,因此一次只能执行一个{{1}}。