Android如何在IntentService上排队多个意图

时间:2013-02-12 13:22:23

标签: android service intentservice

关于IntentService的使用,我有点困惑。

  1. 文档说IntentService将发送给它的所有意图排队并一次处理一个。
  2. 我看了code of IntentService,我看到 onStartCommand()收到了意图,调用 onStart(),将其作为消息发送给意图排队
  3. 我很确定我在文档中读到somwhere,如果你发出两次 startService(),那么 onStartCommand()只被系统调用一次,第二次调用不会导致调用 onStartCommand() 我可能在这里错了,因为我一直在寻找这篇文档而我似乎无法找到它 这与先前的概念相矛盾,该概念表明您可以通过onStartCommand()在IntentService中排队许多意图。

    所以我在这里需要帮助,如何在IntentService上排队多个意图?

    我只看到两个选项:

    • 每次使用不同的意图 startService()进行调用

    • 直接调用 onStart() onStartCommand()(绕过 startService()

1 个答案:

答案 0 :(得分:13)

您使用Intent发送Context.startService(),并且您的服务会在onHandleIntent()中提取意图。

第一次拨打startService()会导致服务onStartCommand()被调用。把它想象成一个构造函数。对startService()的后续调用不需要再次启动服务,因为它已经在运行;它们只会导致对服务onHandleIntent()的更多调用。