我想我已经明白了IntentService类。它处理一个队列,防止太多或多个服务实例一起执行。
我发现它很有用,但是如果我从IntentService派生了太多派生用不同目的的类,我希望它们一起运行而不等待彼此呢?
如果有任何我可以设置的标志或属性,那就太好了,它会说:“允许太多或更多不同的派生类意图服务在自己的队列中运行每一个”
有没有办法做到这一点?
我知道所有其他选择,例如“常规”服务,AsyncTesk,手动管理线程,所以请不要建议我考虑使用它们。我知道他们的优点和局限。
提前感谢。
答案 0 :(得分:2)
没有什么能阻止两个IntentService
一起执行。
例如,给定服务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
的。它们都将在同一时间运行。