15

我对 IntentService 的使用有点困惑。

  1. 文档说 IntentService 将发送给它的所有意图排队并一次处理它们。
  2. 我查看了IntentService 的代码,我看到onStartCommand()接收到意图,调用onStart()将其作为消息发送到意图队列

我很确定我在文档中读到 onStartCommand()只被系统调用一次,如果你发出两次startService(),第二次调用不会导致onStartCommand()被调用。
我在这里可能错了,因为我一直在寻找这段文档,但似乎找不到。
这与之前的概念相矛盾,即您可以通过 onStartCommand() 在 IntentService 中对许多意图进行排队。

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

我只看到两个选项:

  • 只需以不同的意图每次调用startService()

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

4

1 回答 1

13

您发送IntentwithContext.startService()并且 Intent 由您的服务在onHandleIntent().

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

于 2013-02-12T13:28:24.887 回答