0

registerReceiver と addAction について質問があります。

アクティビティで(開始ボタンを介して)実行されるservideがあるとしましょう。このサービスは、registerReceiver を介して受信者を登録します。サービスの onStartcommand() メソッドには次のようなものがあります。

final IntentFilter filter1 = new IntentFilter();
filter1.addAction(ACTION_1); // The ACTION is defined in my code
this.br_receiver = new MyBroadcastReceiver();  // The class is defined in my code
this.registerReceiver(this.br_receiver, filter1);
return (START_STICKY);

ここで、3 つの異なる ACTION と 3 つのチェックボックス (各 ACTION に 1 つ) があるとします。ボタンを押すと、 addAction method() を介して追加する必要があるアクションをチェックするサービスが開始されます。もちろんストップボタン付き。

私の質問: unregisterReceiver() メソッドを使用する場合、必要な ACTION のみの処理を停止するにはどうすればよいですか (停止ボタンをクリックする前にチェックボックスをオンにしたおかげで、どの ACTION かがわかります)。

よくわからないので、別の方法で説明します。1 つの解決策は、サービスを開始するときにすべてのアクション (addAction) を追加し、次に onReceive メソッド () で追加することです。どのアクションを処理するかを知るために、3 つのブール値を使用できます。私はこの解決策はくだらないと思います。

ACTION ごとに 1 つずつ、異なる IntentFilter を使用する必要がありますか? はいの場合、どのように?

回答やアドバイスさえあれば、大歓迎です!

ありがとう。

4

1 に答える 1

1

私の質問: unregisterReceiver() メソッドを使用する場合、必要な ACTION のみの処理を停止するにはどうすればよいですか (停止ボタンをクリックする前にチェックボックスをオンにしたおかげで、どの ACTION かがわかります)。

オプション #1: アクションごとに 1 つずつ、3 つのレシーバーを登録し、ユーザーがチェックを外したアクションのレシーバーを登録解除します。

オプション #2: ユーザーがチェックしたアクションのみを登録し、ユーザーがチェックボックスのチェック/非チェック状態を変更したときに、レシーバーの登録を解除して再登録します。

于 2013-05-06T00:16:07.493 に答える