2

一意のID値を使用してIntentServiceを数回開始しています。インテントを再作成し、それを使用して現在のIntentServiceでstopServiceを呼び出すと、現在のIntentServiceを停止するだけでなく、IntentServiceキュー全体がキャンセルされます。また、キューにあるIntentServiceでstopServiceを呼び出しても、効果はありません。

サービスの開始:

Intent intent = new Intent(context, IntentService.class);
intent.putExtra("action", "scan");
intent.putExtra("id", id);
context.startService(intent);

サービスを停止する

Intent intent = new Intent(context, IntentService.class);
intent.putExtra("action", "scan");
intent.putExtra("id", id);
context.stopService(intent);

関連付けられたIDを持つIntentServiceを停止/キューから削除してから、残りのキューを実行させたいと思います。

4

1 に答える 1

1

ここでは、独自のタイプのインテント サービスを実装する必要があると思います。コードを見ると

メソッドを見ても、stopSelf(int)各インテントの作成方法がわかっている場合は、これを手動で行うことができる場合があります。

mActivityManager.stopServiceToken(
                new ComponentName(this, mClassName), mToken, startId);

次のようなものです:

mActivityManager.stopServiceToken(
                new ComponentName(this, IntentService.class.getSimpleName()), null, mStartId);

私はこれを試していませんが、正しい方向へのナッジかもしれません。実行中のサービスを停止するだけなので、何もしないかもしれないと思いますが。

それ以外の場合は、削除インテントを起動できる独自の IntentService を作成する必要があります.. @commonsguyを微調整する価値があるかもしれません

乾杯、
クリス

于 2012-08-23T09:20:51.390 に答える