Android:多个意图服务或一个具有多个意图的意图服务?

Android: multiple intentservices or one intentservice with multiple intents?

我对 intentService 有点困惑。文档说,如果您向 intentService 发送多个任务(意图),那么它将在一个单独的线程上一个接一个地执行它们。我的问题是 - 是否可以同时拥有多个 intentService 线程?您如何在代码中区分在同一个 intentService(同一个线程)上创建三个不同的 intent,还是三个单独的 intentService,每个 intentService 都有自己的线程,每个 intent 都执行一个?

换句话说,当您执行命令 startService(intent) 时,您是将意图放在单个队列中还是每次都启动一个新队列?

Intent someIntent1 = new Intent(this, myIntentService.class);
Intent someIntent2 = new Intent(this, myIntentService.class);
Intent someIntent3 = new Intent(this, myIntentService.class);
startService(someIntent1);
startService(someIntent2);
startService(someIntent3);

1)是否可以同时有多个intentService线程?

不,每个 IntentService 只有一个 HandlerThread 用于按照调用 "startService" 的顺序执行请求。除非出于某种原因您决定在 IntentService 中生成您自己的 Thread/Threads,但这可能首先会破坏使用 IntentService 的目的。具有相同清单声明的服务,即服务名称 =“.MyIntentService”(这对于普通服务是相同的)运行 作为其进程中的单例,因此在服务被终止之前,相同的服务将收到额外的启动请求.

2) 在代码中如何区分在同一个 IntentService 上创建三个不同的 Intent?

要区分请求,请按预期使用 Intent 系统!为服务可以执行的不同作业提供不同的 "Actions",并将 IntentService 需要的任何额外内容正确地传递给 运行 作为用于启动服务的 Intent 对象中的特定作业的额外内容。