0

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

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

我已阅读android 服务指南和参考。虽然它们清楚地显示了IntentService工作线程是如何序列化的,但我几乎没有找到有关如何传递和处理 Intent 的信息。

4

1 回答 1

2

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

在这方面的行为Service是无证的,最后我检查了。但是,应该根据实际发生的情况,按照发出的顺序调用它们。

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

那取决于你。默认情况下,在主应用程序线程上调用 on onStartCommand()a Service,因此一次只处理一个命令。如果您选择派生线程onStartCommand()来处理命令,这些线程可能会并行运行。

虽然它们清楚地显示了 IntentService 工作线程是如何序列化的,但我几乎没有发现有关如何交付和处理 Intent 的信息。

IntentService维护自己的线程。您实施onHandleIntent()而不是(或可能除了)onStartCommand()。由于只有一个线程,因此一次onHandleIntent()只会执行一个。

于 2012-12-12T15:43:30.553 回答