Android之廣播機制—靜態註冊
阿新 • • 發佈:2019-02-15
廣播機制:
通過當前Activity里加載的佈局內的控制元件繫結監聽器,監聽器內建立Intent物件,
並給Intent的action標籤賦值(一般選擇內建標籤),
並用當前activity的物件的sendBroadcast方法將這個帶有廣播的intent物件傳送出去。
然後建立廣播接收器類,繼承自BroadcastReceiver父類,重寫其onReceive方法,
在onReceive方法內,寫入邏輯程式碼,也就是接收廣播後的
處理方法。然後在Manifest檔案裡對Receiver進行註冊,
Receiver內的action標籤必須和剛才傳送訊息的intent的action標籤內容一致。
這樣每次動作帶有監聽器的控制元件時,廣播接收器就能收到其廣播,並做出相應處理。
示例程式碼:
首先在Manifest檔案中為Receiver進行註冊。
以上在Manifest檔案中進行註冊的方法叫做靜態註冊,靜態註冊的好處就是程式即使未啟動,
我們也能接收到廣播。
還有一種方法叫做動態註冊,即在程式碼中完成註冊。好處是我們可以自由的控制註冊與登出。
靈活性方面有很大的優勢。
需要注意的是,動態註冊的廣播接收器一定要取消註冊才行。
通過當前Activity里加載的佈局內的控制元件繫結監聽器,監聽器內建立Intent物件,
並給Intent的action標籤賦值(一般選擇內建標籤),
並用當前activity的物件的sendBroadcast方法將這個帶有廣播的intent物件傳送出去。
然後建立廣播接收器類,繼承自BroadcastReceiver父類,重寫其onReceive方法,
在onReceive方法內,寫入邏輯程式碼,也就是接收廣播後的
處理方法。然後在Manifest檔案裡對Receiver進行註冊,
Receiver內的action標籤必須和剛才傳送訊息的intent的action標籤內容一致。
這樣每次動作帶有監聽器的控制元件時,廣播接收器就能收到其廣播,並做出相應處理。
示例程式碼:
首先在Manifest檔案中為Receiver進行註冊。
</pre><pre name="code" class="html"><!--為建立的廣播接收器類進行註冊,引用接收器類的地址,和activity的引用方式一樣--> <receiver android:name=".Receiver"> <!--intent-filter內的action標籤寫上和我們傳送廣播的intent的標籤相同,這樣這個接收器就能 夠接收我們按鈕所發出的廣播了。如果標籤不同,就不會接收,也不會建立廣播接收器的物件例項。--> <intent-filter> <action android:name="android.intent.action.EDIT"/> </intent-filter> </receiver>
接下來是按鈕的監聽器,用於傳送廣播。
接下來是接收器類,接收器類一般情況下是需要我們自己建立的。button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//監聽器的含義就是,點選一次按鈕,就傳送一次廣播。 //通過顯式Intent來傳遞這個廣播。 //新建intent的同時,給intent的setAction屬性賦值。 //值為標籤"Intent.ACTION_EDIT",需要注意的是,標籤裡的Intent仍然是大寫的. Intent intent=new Intent(Intent.ACTION_EDIT); //然後用當前Activity的sendBroadcast(send是傳送的意思)方法將這個帶有廣播屬性的intent傳送出去。 //這個intent廣播的標籤為ACTION_EDIT,所以能接收這個廣播並處理的Receiver的action標籤也必須為ACTION_EDIT. MainActivity.this.sendBroadcast(intent); } });
//這是我們建立的廣播接收器,他先得繼承BroadcastReceiver父類,然後複寫其onReceive(這裡不帶r)方法。
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context,Intent intent){
//onReceive方法的內容就是接收了廣播之後的處理方法。
Log.d("msg","onReceiver");
}
}
以上在Manifest檔案中進行註冊的方法叫做靜態註冊,靜態註冊的好處就是程式即使未啟動,
我們也能接收到廣播。
還有一種方法叫做動態註冊,即在程式碼中完成註冊。好處是我們可以自由的控制註冊與登出。
靈活性方面有很大的優勢。
需要注意的是,動態註冊的廣播接收器一定要取消註冊才行。