1

私は IntentService クラスのポイントを持っていると思います。サービスのインスタンスが同時に実行されるのを防ぐキューを処理します。

便利だと思いましたが、目的が異なる IntentService からあまりにも派生したクラスがあり、それらの両方を互いに待たずに一緒に実行したい場合はどうすればよいでしょうか?

私が設定できるフラグまたは属性があれば、それは素晴らしいことでした。それは、次のようなものです。

それを行う方法はありますか?

「通常の」サービス、AsyncTesk、手動でスレッドを管理するなど、他のすべての代替手段について知っているので、代わりにそれらを使用することを検討しないでください。私はそれらの利点と限界を知っています。

前もって感謝します。

4

1 に答える 1

2

2 つIntentServiceの が一緒に実行されることを妨げるものは何もありません。

例として、サービスが与えられた場合、ServiceA

public class ServiceA extends IntentService {
   ...
}

およびServiceA適切な名前のサブクラスServiceB

public class ServiceB extends ServiceA {
}

ServiceBはエグゼキュータ/キュー (またはその他のもの) を と共有しませつまり、両方が同時に実行できます。にループを入れることで、これを簡単にテストできます。ServiceAServiceA

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 に答える