廣播文檔
概述:在Android中自娩,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制用踩。我們拿廣播電臺來做個比方。我們平常使用收音機收音是這樣的:許許多多不同的廣播電臺通過特定的頻率來發(fā)送他們的內容,而我們用戶只需要將頻率調成和廣播電臺的一樣就可以收聽他們的內容了脐彩。Android中的廣播機制就和這個差不多的道理碎乃。
作用:
其實,在什么是廣播的第一句就已經說明了廣播有什么用了丁屎。對了荠锭,籠統(tǒng)一點講就是用來傳輸數據的。具體一點說就是: 1. 實現了不同的程序之間的數據傳輸與共享晨川,因為只要是和發(fā)送廣播的action相同的接受者都能接受這個廣播证九。典型的應用就是android自帶的短信,電話等等廣播共虑,只要我們實現了他們的action的廣播愧怜,那么我們就能接收他們的數據了,以便做出一些處理妈拌。比如說攔截系統(tǒng)短信拥坛,攔截騷擾電話等等。 2. 起到了一個通知的作用尘分,比如在service中要通知主程序猜惋,更新主程序的UI等。因為service是沒有界面的培愁,所以不能直接獲得主程序中的控件著摔,這樣我們就只能在主程序中實現一個廣播接受者專門用來接受service發(fā)過來的數據和通知了
分類:安卓廣播分為標準廣播和有序廣播或常駐型廣播和非常駐型廣播
有序廣播:
就是一種同步執(zhí)行的廣播,在廣播發(fā)出之后定续,同一時刻只會有一個廣播接收器能夠接收到這條廣播谍咆,當該廣播接收器執(zhí)行完OnReceive()方法邏輯后,廣播才會繼續(xù)傳遞私股。這種廣播是可以被攔截的摹察。
無序廣播:
不可以被攔截,不可以被終止倡鲸,不可以被修改供嚎,無序廣播任何接收者只要匹配條件都可以接收到,無優(yōu)先級問題峭状。
注:
有些廣播可以通過動態(tài)(java代碼)靜態(tài)(xml文件)方式任一種來注冊克滴;
有些廣播則必須通過某一種方式來注冊,比如開機廣播必須通過XML方式來注冊宁炫,監(jiān)聽手機屏幕解鎖開鎖則必須通過java代碼來注冊偿曙。
注冊:
// 注冊廣播接收
receiveBroadCast = new ReceiveBroadCast();
IntentFilter filter = new IntentFilter();
filter.addAction(flag);? ? //只有持有相同的action的接受者才能接收此廣播
registerReceiver(receiveBroadCast, filter);
public class ReceiveBroadCast extends BroadcastReceiver {
? ? @Override
? ? public void onReceive(Context context, Intent intent)
? ? {
? ? ? ? //得到廣播中得到的數據氮凝,并顯示出來
? ? ? ? String message = intent.getStringExtra("data");
? ? ? ? txtShow.setText(message);
? ? }
}