对于IntentService的使用,我有些困惑。

  • 该文档说,IntentService将发送给它的所有意图排队,并一次处理一个。
  • 我看了看code of IntentService,我看到onStartCommand()收到了意图,调用了onStart()并将其作为消息发送到意图队列

  • 我很确定我在文档中读到了sostart,其中onStartCommand()仅由系统调用一次,如果发出两次startService(),则第二次调用不会导致onStartCommand()被调用。
    我在这里可能是错的,因为我一直在寻找这份文档,但似乎找不到。
    这与先前的概念相反,前一个概念表示您可以通过onStartCommand()在IntentService中排队许多Intent。

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

    我只看到两个选择:
  • 每次使用不同的意图每次调用startService()
  • 直接调用onStart()或onStartCommand()(绕过startService())
  • 最佳答案

    您将IntentContext.startService()一起发送,并且您的服务会在onHandleIntent()中获取Intent。

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

    09-27 05:44