1

我想我已经明白了 IntentService 类的意义。它处理一个队列,防止太多或更多的服务实例一起执行。

我发现它很有用,但是如果我从 IntentService 派生了太多具有不同目的的类,并且我希望它们一起运行而无需相互等待怎么办?

如果我可以设置任何标志或属性,那就太好了,它会说:“允许太多或更多不同的派生类意图服务在他自己的队列上运行每个服务”

有什么办法吗?

我知道所有其他替代方案,例如“常规”服务、AsyncTesk、手动管理线程,所以请不要建议我考虑使用它们。我知道它们的优点和局限性。

提前致谢。

4

1 回答 1

2

没有什么可以阻止两个IntentServices 一起执行。

例如,给定一个服务,ServiceA

public class ServiceA extends IntentService {
   ...
}

ServiceA恰当命名的子类ServiceB

public class ServiceB extends ServiceA {
}

ServiceB不会共享执行器/队列(或其他任何东西)ServiceA,即两者可以同时执行。您可以通过在其中放置一个循环来轻松测试它ServiceA,例如

protected void onHandleIntent(Intent intent) {
    for (int i = 0; i < 20; i++) {
        System.out.println(getClass().getSimpleName() + " says hello");
        try {
            Thread.sleep(2000L);
        } catch (InterruptedException e) {
            return;
        }
    }
}

然后打电话

startService(new Intent(this, ServiceA.class));
startService(new Intent(this, ServiceB.class));

从你的Activity. 它们将同时运行。

于 2012-05-30T14:24:06.957 回答