使用目的:通過廣播接收者,可以進行元件之間進行通訊、應用程式之間的通訊;
廣播是用來傳輸資料的;
廣播可以實現了不同的程式之間的資料傳輸與共享,因為只要是和傳送廣播的action
相同的接受者都能接受這個廣播。典型的應用就是
android
自帶的簡訊,**等等廣播(這些都是系統廣播);
系統也可能傳送廣播,
安卓是基於事件觸發的
,任何狀態的改變都會發出廣播,比如收到簡訊、收到**等;
接收系統廣播,接收自定義廣播;
廣播以內部類的形式實現,寫到activity裡面。
廣播分為有序廣播和無序廣播;
廣播的使用步驟
: 註冊廣播、取消廣播、傳送廣播、接收廣播;
一、註冊廣播:
訂閱廣播,
有兩種方法形式:
xml配置、**配置。註冊乙個廣播接收者。
xml檔案配置訂閱,不需要取消廣播的訂閱。註冊廣播需要設定
action,只有和註冊廣播的動作一致的接收者才能收到廣播。
通過**註冊廣播接收者:記住最重要的一行**;通過**註冊一定要取消廣播的訂閱。
mreceiver = new myreceiver();
intentfilter intentfilter = new intentfilter();
intentfilter.addaction("chenrushui"); //為intent設定動作
intentfilter.adddatascheme("cast");//這裡不需要: 新增資料約束。
registerreceiver(mreceiver, intentfilter);
二、取消廣播:
unregisterreceiver(mreceiver);
不取消廣播的訂閱,可能導致記憶體洩露。
@override
protected void ondestroy()
三、傳送廣播:
sendbroadcast(new intent());傳送普通廣播
;所有的接收者可以同時受到廣播;無法終斷。
sendorderbroadcast(new intent());傳送有序廣播
;有接收廣播的優先順序,而接收廣播的優先順序是由接收者自己指定的。接收廣播的優先順序的範圍是
-1000
到1000.
有序廣播可以終斷;但是有序廣播可以明確的指定接收者,這樣廣播就不可以終斷;
sendorderedbroadcast(intent, null, new myreceiver2(), new handler(), 0, null, null);
這兩個方法是上下文身上的方法;
通過廣播傳遞引數,廣播裡面傳遞的是intent
,可以攜帶資料
;傳送廣播時,要給intent
帶上action
,標識intent
的唯一性;
intent.setaction()
只有動作一致才能收到廣播。
在傳送廣播時,如果為intent
設定了data
,那麼對應的廣播接收者一定要設定
data
才能接收到廣播。
intentfilter.adddatascheme("cast")
findviewbyid(r.id.btn_1).setonclicklistener(new view.onclicklistener()
});
四、接收廣播:
寫乙個類繼承自broadcastreceiver
,在子類的
onreceive()
方法中處理相應的業務邏輯。在廣播接收者收到廣播時,呼叫
onreceive()
方法。
public class myreceiver extends broadcastreceiver
}}
有序廣播案例: 設定廣播的優先順序、中斷廣播的實現、abortbroadcast()、android:priority="-1000"
清單檔案中**:
myreceiver1中的**:
public class myreceiver1 extends broadcastreceiver
//直接呼叫這個方法中斷廣播,優先順序低的廣播接收者就都收不到廣播了。
abortbroadcast();
}}
myreceiver2中的**:
public class myreceiver2 extends broadcastreceiver
}}
接收的是否是系統廣播,怎麼判斷?
只能通過action判斷,並且**中沒有明確的廣播傳送者。
intentfilter filter = new intentfilter(connectivitymanager.connectivity_action);
BroadcastReceiver廣播機制
廣播傳送資訊,不管接受者是誰 首先要了解明白intent 物件,其中包括 action 傳送資料的方法 data 傳送的資料 最終目的是為了傳送資料,如果想要傳送乙個廣播,就必須呼叫 sendbroadcast intent 這個方法廣播給感興趣的廣播接收器,而在 androidmanifest.x...
BroadcastReceiver的基本使用
broadcastreceiver 廣播的一種實現 個人理解 當我們需要判斷電池是否沒電 收到簡訊 等一系列動作的時候,系統會傳送相應的廣播,通知系統中所有捕獲該廣播的軟體,軟體可以做相應的動作 1 靜態註冊方式,就是在androidmanifest.xml直接註冊 1 建立乙個類 並實現 broa...
我對BroadcastReceiver的簡單理解
1.在androidmanifest.xml中先註冊寫好的mybroadcastreceive 2.寫乙個類來extends類broadcastreceiver,並實現onreceiver方法 package org.lzm.android.broadcastreceiver import andr...