1

私のアプリケーションでは、ブロードキャストを送信して受信する簡単な方法を使用しています。

Intent in = new Intent("UPDATE_SOMETHING");
sendBroadcast(in);

そして、私のレシーバーでは、if(intent.getAction().equals("UPDATE_SOMETHING")) をチェックするだけです。もちろん、intent-filter の AndroidManifest で、どのレシーバーを受信する必要があるかをアプリケーションが認識できるようにします。この方法は私にとってはうまく機能しますが、他の方法でこれを行うことができることがわかりました。

Intent in = new Intent(getApplicationContext(), Receiver.class);
in.setAction("UPDATE_SOMETHING");
sendBroadcast(in);

この例では、アクションを AndroidManifest に入れる必要はなく、上記と同じ方法でレシーバーで確認できます (if(intent.get...))

第三の方法もあります

Intent in = new Intent();
in.setAction("UPDATE_SOMETHING");
sendBroadcast(in);

そして AndroidManifest にアクションを入れます...

私の質問は、この 3 つの方法のうちどれを使用するのが最適かということです。また、これらの方法の間に違いはありますか? (コードを書く場合を除く):)

4

1 に答える 1

1

1番目と3番目の方法は同じです。アクションをインテントに渡す方法の唯一の違い (コンストラクターまたはメソッドを介して)。これらのメソッドは両方とも、UPDATE_SOMETHING アクションをリッスンするすべての登録済みブロードキャスト レシーバーにブロードキャストを送信します。

2 番目の方法では、明示的にブロードキャストを Receiver クラスに送信します。したがって、他の放送受信機はそれを見たり受信したりしません。

于 2012-09-20T19:15:25.270 に答える