Android廣播其實(shí)和我們生活中的廣播類似 笼統(tǒng)的來(lái)說(shuō)就是傳播數(shù)據(jù)。
1.實(shí)現(xiàn)了不同應(yīng)用程序之間的數(shù)據(jù)傳輸和共享(比如通過(guò)獲取短信,電話做到攔截功能)
2.起到了一個(gè)通知的作用,比如在service中要通知主程序,更新主程序的UI等。
實(shí)現(xiàn)廣播其實(shí)很簡(jiǎn)單
1.既然是廣播一定要有發(fā)送方和接受方
對(duì)于發(fā)送方來(lái)說(shuō),我們需要一個(gè)橋梁(Intent)
Intent intent = new Intent(); //Itent就是我們要發(fā)送的內(nèi)容 intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND)); intent.setAction(flag); //設(shè)置你這個(gè)廣播的action,只有和這個(gè)action一樣的接受者才能接受者才能接收廣播 sendBroadcast(intent); //發(fā)送廣播作為接收方,需要對(duì)廣播進(jìn)行注冊(cè)(動(dòng)態(tài)和靜態(tài))1.先定義一個(gè)接受類public class ReceiveBroadCast extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //得到廣播中得到的數(shù)據(jù)輸出到控制臺(tái) String message = intent.getStringExtra("data"); Log.i("test",message); } }1.1-動(dòng)態(tài)廣播(不需要在應(yīng)用的配置文件中注冊(cè),直接使用java代碼進(jìn)行注冊(cè))在頁(yè)面啟動(dòng)的時(shí)候注冊(cè)(OnResume) receiveBroadCast = new ReceiveBroadCast(); IntentFilter filter = new IntentFilter(); filter.addAction(flag); //只有持有相同的action的接受者才能接收廣播 registerReceiver(receiveBroadCast, filter);首先我們實(shí)現(xiàn)了一個(gè)ReceiveBroadCast 類,它繼承了BroadcastReceiver并實(shí)現(xiàn)了其中的onReceive方法,這樣當(dāng)這個(gè)廣播被接收的時(shí)候就會(huì)執(zhí)行這個(gè)方法。注意我們?cè)谧?cè)廣播的時(shí)候使用了filter.addAction方法添加了一個(gè)過(guò)濾器。如果沒(méi)有這一句,就相當(dāng)于廣播電臺(tái)沒(méi)有告訴咱們收音機(jī)用戶接收的頻率,就不好收聽(tīng)這個(gè)廣播了。注意!動(dòng)態(tài)廣播需要對(duì)廣播進(jìn)行注銷 unregisterReceiver(flag); //注銷相對(duì)應(yīng)的Action那么一個(gè)動(dòng)態(tài)的廣播就簡(jiǎn)單的實(shí)現(xiàn)了。1.2-靜態(tài)廣播(通過(guò)配置文件注冊(cè))<receiver android:name="com.qlf.broadCast.broadCastReceiveByxml"> <intent-filter> <action android:name="com.qlf.broadCastFlag"> </action> </intent-filter></receiver>receiver中的android:name就是我們?cè)诔绦蛑械哪莻€(gè)接收廣播的類。下面的intent-filter和我們講到的功能類似,而這個(gè)action就是上面的那個(gè)flag除了使用我們自己發(fā)送廣播,android也內(nèi)置了許多廣播
分享一個(gè)Android系統(tǒng)廣播大全http://blog.csdn.net/u013290075/article/details/51115648
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注