如果一个 IntentService 对象被完全处理并且花费了不确定的时间,那么其他排队的意图将如何处理?

If an IntentService object is processed completely and takes indefinite time, how will other queued up intents be processed?

我有一个扩展 IntentService 的 Class ABC。此 class 由名为 DEF 的接收器 class 调用,它扩展了 WakefulBroadcastReceiver。

每当 DEF class 收到意图时,它都会调用 startWakefuleService 并将意图传递给 ABC class。

在ABCclass的onHandle()中处理intent,并使用callback将相关信息发送给服务器

在 onHandle() 结束时,DEF.completeWakefulIntent(intent) 被调用到 return 唤醒锁。

我的问题是关于以下场景:

  1. 我的 BroadcastReceiver class DEF,收到多个意图

  2. 通过classABC启动了多个IntentServices。

  3. 第一个Intent Service向服务器发起http请求,需要很长时间才能返回或者根本不返回。

其他启动的 Intent Service 是否会被处理,或者它们会卡在等待处理的队列中吗?

[文档] (https://developer.android.com/reference/android/app/IntentService.html) 说 IntentService 对象是按顺序处理的。

如有任何帮助,我们将不胜感激。

IntentService 的所有请求都在单个线程上处理并按顺序完成。如果请求阻塞 onHandleIntent() 并阻止其完成,则将永远不会处理进一步的请求。

服务只有一个实例。没有"the other IntentService".

这样的东西

All requests are handled on a single worker thread -- they may take as long as necessary (and will not block the application's main loop), but only one request will be processed at a time.