Android:4つのコンポーネントの---ブロードキャスト(Broadcast)

2605 ワード

多くの読者が筆者と同じように、アンドロイドを習ったばかりの頃からラジオに触れていたと信じています.しかし、放送も実はいくつかの種類に分かれていることを知らないで、私たちが学んだのは放送の1つだけです:普通の放送
Androidの放送は次のように分けられます.
一般放送、
秩序ある放送、
ローカル放送、
sticky放送、
この4つの放送の違いと使い方をご紹介します.
一.一般放送
通常放送は非同期で、context、sendBroadcast()で送信されます.伝達効率が高い.しかし、すべてのreceiver(受信機)の受信順序は決定されない.
このようなブロードキャストは、処理結果を次の受信者に渡すことができず、ついにIntentの伝播をブロードキャストすることができず、それに一致しないブロードキャスト受信機が終了することを知っている.
ブロードキャスト受信機を定義する方法は次のとおりです.
ブロードキャスト受信機は、4つのコンポーネントの他のコンポーネントと同様に、AndroidManifestに登録する必要がある.xml登録方式:
public class TestBroadcastRecever extends BrocadcastReceiver{
  public void onReceive(Context context,Intent intent){
Log.i("test","hi ");
  }
}
        
javaコードを使用した登録方法:
 IntentFilter intentFilter=new IntentFilter();
        registerReceiver(new TestBrocastRecever(),intentFilter);
コードで登録する場合はintentFilterで各種actionを指定できます.AndroidManifestではxml登録はintent-filterタグにactionタグを設定することで同じ目的を達成できます.
二.ちくじほうそう
秩序ある放送はcontextを通過する.sendOrderedBroadcast()で送信されました.すべてのブロードキャストは受信機の優先度の高低に従って受信される.
受信機の優先度はreceiverのintent-fillterのandroid:priorityプロパティによって設定されます.値が大きいほど優先度が高くなります.
受信機がブロードキャストを受信した後、setResult()を使用して結果を次の光比受信機に送信することができ、次のブロードキャスト受信機はgetResultを介して前のブロードキャスト受信機から返された結果を受信することができる.また、abortBroadcast()関数を使用して、システムがブロードキャストを廃棄し、ブロードキャストが他のブロードキャスト受信機に伝達されなくなるようにすることができる.
三.ローカル放送
ローカルブロードキャスト:LocalBrocastManagerがapi level 21のsupport v 4に追加されました.
上述した一般放送と秩序放送はいずれもグローバルであり,システム内のすべてのアプリケーションが受信できる.これは安全上の危険をもたらす可能性があります.ある時、私たちは自分のアプリケーション内の情報を他のアプリケーションに放送する必要はありません.プロセス内で使用すれば、ローカル放送を使用することができます.
ローカル放送の使い方は簡単です.ブロードキャスト登録ブロードキャストとログアウトブロードキャストを送信するときに、次の方法に変更するだけです.
LocalBroadcastManager.getInstance(context).sendBrocast();//非同期ブロードキャストの送信
LocalBroadcastManager.getInstance(context).sendBrocastSync();//同期ブロードキャストの送信
LocalBroadcastManager.getInstance(context).registerReceiver();//ブロードキャストの登録
LocalBroadcastManager.getInstance(context).unregisterReceiver();//ブロードキャストの登録解除
ローカルライト比は通常放送の操作方式と操作のクラスが異なるだけです.その他の使用方法は基本的に一致している.したがって、ローカルブロードキャストに置き換えるコストは比較的低い.他のプロセスがブロードキャストを受信する必要がない場合には、ローカルブロードキャストを使用する必要があります.
四.sticky放送
sticky放送はcontextを通過する.sendStickyBrocast(0関数送信、この関数で送信されるブロードキャストは滞留し続け、一致するブロードキャスト受信機が登録されると、ブロードキャスト受信機はブロードキャストを受信する.
この放送は比較的特殊で、BROADCASTが必要です.STICK権限は使用できます.
stickyブロードキャストは、最後の選択ブロードキャストのみを保持し、ブロードキャストを処理したブロードキャスト受信機がすでに存在していても、ブロードキャストに一致するブロードキャスト受信機が登録されると、ブロードキャストを受信する.ブロードキャストを削除するにはremoveStickyBrocast(0関数で削除)を使用します.