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

ilo*_*mbo 14 service android intentservice

关于IntentService的使用我有点困惑.

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

我很确定我在文档中读到somwhere只有系统调用onStartCommand()一次,如果你发出两次startService(),第二次调用不会导致调用onStartCommand().
我可能在这里错了,因为我一直在寻找这篇文档而我似乎无法找到它.
这与先前的概念相矛盾,该概念表明您可以通过onStartCommand()在IntentService中排队许多意图.

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

我只看到两个选项:

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

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

Gra*_*and 13

您发送了Intent,Context.startService()并且您的服务接收了意图onHandleIntent().

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

  • 对,那是正确的.您需要做的就是调用`startService()`,并在服务中实现`onHandleIntent()`.系统会为您完成其他所有操作,包括决定实际启动服务的方式和时间. (2认同)