a) 如果我的代码调用startService()
了两次,是否会按照我调用它们的顺序处理 Intent,或者它们可能会随机切换?
b)第一次运行会onStartCommand()
在第二次调用开始之前完成,还是它们可以并行运行?
我已阅读android 服务指南和参考。虽然它们清楚地显示了IntentService
工作线程是如何序列化的,但我几乎没有找到有关如何传递和处理 Intent 的信息。
a) 如果我的代码调用startService()
了两次,是否会按照我调用它们的顺序处理 Intent,或者它们可能会随机切换?
b)第一次运行会onStartCommand()
在第二次调用开始之前完成,还是它们可以并行运行?
我已阅读android 服务指南和参考。虽然它们清楚地显示了IntentService
工作线程是如何序列化的,但我几乎没有找到有关如何传递和处理 Intent 的信息。
如果我的代码调用 startService() 两次,是否会按照我调用它们的顺序处理 Intent,或者它们是否会随机切换?
在这方面的行为Service
是无证的,最后我检查了。但是,应该根据实际发生的情况,按照发出的顺序调用它们。
第一次通过 onStartCommand() 运行会在第二次调用开始之前完成,还是它们可以并行运行?
那取决于你。默认情况下,在主应用程序线程上调用 on onStartCommand()
a Service
,因此一次只处理一个命令。如果您选择派生线程onStartCommand()
来处理命令,这些线程可能会并行运行。
虽然它们清楚地显示了 IntentService 工作线程是如何序列化的,但我几乎没有发现有关如何交付和处理 Intent 的信息。
IntentService
维护自己的线程。您实施onHandleIntent()
而不是(或可能除了)onStartCommand()
。由于只有一个线程,因此一次onHandleIntent()
只会执行一个。