是startService()Intents是否已序列化?

时间:2012-12-12 15:14:25

标签: android android-intent android-service

a)如果我的代码调用startService()两次,是否按照我调用它的顺序处理Intent,或者它们是否可以随机切换?

b)第二次通话开始之前第一次完成onStartCommand(),或者它们可能并行运行吗?

我已阅读android services guide和参考资料。虽然它们清楚地显示了IntentService工作线程是如何序列化的,但我发现很少有关于如何传递和处理Intent的信息。

1 个答案:

答案 0 :(得分:2)

  

如果我的代码调用startService()两次,是否会按照我调用的顺序处理Intent,还是可以随机切换它们?

Service在这方面的行为没有记录,最后我查了一下。但是,应根据实际发生的情况按照发布的顺序调用它们。

  

在第二次调用开始之前第一次运行onStartCommand()会完成,还是可以并行运行?

这取决于你。默认情况下,在主应用程序线程上调用onStartCommand()上的Service,因此一次只处理一个命令。如果您选择将线程从onStartCommand()分叉到处理命令,那么这些线程可以并行运行。

  

虽然他们清楚地显示了IntentService工作线程是如何序列化的,但我发现很少有关于如何传递和处理Intent的信息。

IntentService维护自己的主题。您实施onHandleIntent()而不是onStartCommand()(或可能除此之外)onHandleIntent()。由于只有一个线程,因此一次只能执行一个{{1}}。