Android:四大元件之-----廣播(Broadcast)
阿新 • • 發佈:2019-01-08
相信很多讀者都與筆者一樣,在剛學安卓的時候就接觸到廣播。但是並不知道廣播其實也分好幾種,我們剛學習使用的只是廣播的其中一種:普通廣播
android的廣播分為:
普通廣播,
有序廣播,
本地廣播,
sticky廣播,
下面就為大家介紹一下這四種廣播的區別與用法。
一.普通廣播
普通廣播是非同步的,通過context,sendBroadcast()傳送。傳遞效率比較高。但是所有receivers(接收器)的接收順序並不能確定。這種廣播不能將處理結果傳遞給下一個接受者,並且無法終於廣播Intent的傳播,知道沒有與之相匹配的廣播接收器才會結束。
定義廣播接收器的方法如下:
廣播接收器與四大元件的其它元件一樣,也需要註冊,在AndroidManifest.xml註冊方式:
public class TestBroadcastRecever extends BrocadcastReceiver{
public void onReceive(Context context,Intent intent){
Log.i("test","hi ");
}
}
<receiver android:name="xxx.TestBrocastRecever"></receiver>
使用java程式碼的註冊方式:
用程式碼註冊的時候可以用intentFilter指定各種action。而在AndroidManifest.xml註冊的話可以通過intent-filter標籤中設定action標籤達到相同的目的。IntentFilter intentFilter=new IntentFilter(); registerReceiver(new TestBrocastRecever(),intentFilter);
二.有序廣播
有序廣播是通過context.sendOrderedBroadcast()傳送的。所有廣播按照接收器的優先順序高低接收。 而接收器的優先順序是通過receiver的intent-fillter的android:priority屬性設定的。數值越大優先順序越高。 當接收器收到廣播之後可以使用setResult()來將結果傳給下一個光比接收器,然後下一個廣播接收器可以通過getResult接收上一個廣播接收器返回的結果。並可以用abortBroadcast()函式來讓系統丟棄該廣播,使得該廣播不再傳遞到其它廣播接收器。三.本地廣播
LocalBroadcastManager.getInstance(context).registerReceiver();//註冊廣播
LocalBroadcastManager.getInstance(context).unregisterReceiver();//登出廣播
本地光比與普通廣播的操作方式只是操作的類不一樣而已。其它使用法方式基本上一致。因此替換為本地廣播的成本會比較低。在不需要其它程序接收廣播的情況下使用本地廣播是有必要的。