日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之旅---广播(BroadCast)

發布時間:2023/12/10 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之旅---广播(BroadCast) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是廣播

???????? 在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。我們拿廣播電臺來做個比方。我們平常使用收音機收音是這樣的:許許多多不同的廣播電臺通過特定的頻率來發送他們的內容,而我們用戶只需要將頻率調成和廣播電臺的一樣就可以收聽他們的內容了。Android中的廣播機制就和這個差不多的道理。

電臺發送的內容是語音,而在Android中我們要發送的廣播內容是一個Intent。這個Intent中可以攜帶我們要傳送的數據。

電臺通過大功率的發射器發送內容,而在Android中則是通過sendBroadcast這個方法來發送(很形象的名字吧)。???????

用戶通過調整到具體的電臺頻率接受電臺的內容。而在Android中要接受廣播中的內容則是通過注冊一個BroadCastReceiver來接收的。只有發送廣播的action和接收廣播的action相同,接受者才能接受這個廣播。 廣播有什么用 其實,在什么是廣播的第一句就已經說明了廣播有什么用了。對了,籠統一點講就是用來傳輸數據的。具體一點說就是: ? 1.實現了不同的程序之間的數據傳輸與共享,因為只要是和發送廣播的action相同的接受者都能接受這個廣播。典型的應用就是android自帶的短信,電話等等廣播,只要我們實現了他們的action的廣播,那么我們就能接收他們的數據了,以便做出一些處理。比如說攔截系統短信,攔截騷擾電話等等 2.起到了一個通知的作用,比如在service中要通知主程序,更新主程序的UI等。因為service是沒有界面的,所以不能直接獲得主程序中的控件,這樣我們就只能在主程序中實現一個廣播接受者專門用來接受service發過來的數據和通知了。 實現廣播

???????? 現在我們就來實現一個簡單的廣播程序。Android提供了兩種注冊廣播接受者的形式,分別是在程序中動態注冊和在xml中指定。他們之間的區別就是作用的范圍不同,程序動態注冊的接收者只在程序運行過程中有效,而在xml注冊的接收者不管你的程序有沒有啟動有會起作用。首先介紹在程序中動態注冊的方式。

動態注冊方式

???????? 我們在程序中設置了三個按鈕,分別是“注冊廣播”,“取消注冊”和“發送廣播”。然后每個按鈕設置點擊事件來完成廣播的演示。

最簡單的項目的建立過程和按鈕事件的建立我再這里就不羅嗦了,不會的可以下載下面的DEMO源碼查看。直接看三個按鈕的實現方式。

首先是注冊廣播的按鈕事件代碼:

private ReceiveBroadCast receiveBroadCast; //廣播實例public class RegisteLinster implements OnClickListener {@Overridepublic void onClick(View view){// 注冊廣播接收receiveBroadCast = new ReceiveBroadCast();IntentFilter filter = new IntentFilter();filter.addAction(flag); //只有持有相同的action的接受者才能接收此廣播registerReceiver(receiveBroadCast, filter);} }public class ReceiveBroadCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent){//得到廣播中得到的數據,并顯示出來String message = intent.getStringExtra("data");txtShow.setText(message);}}

首先我們實現了一個ReceiveBroadCast 類,它繼承了BroadcastReceiver并實現了其中的onReceive方法,這樣當這個廣播被接收的時候就會執行這個方法。注意我們在注冊廣播的時候使用了filter.addAction方法添加了一個過濾器。如果沒有這一句,就相當于廣播電臺沒有告訴咱們收音機用戶接收的頻率,就不好收聽這個廣播了。

再來看看如何取消注冊,是的程序不再接收這個類型的廣播了。

public class UnregisteLinster implements OnClickListener {@Overridepublic void onClick(View arg0){unregisterReceiver(receiveBroadCast);} }

怎么樣?是不是超級簡單的啊,就是將我們上面的那個廣播類的實例傳進去就行了。現在注冊,取消注冊都好了,就剩下如何發送了。看代碼:

public class SendBroadCastListener implements OnClickListener {@Overridepublic void onClick(View arg0){Intent intent = new Intent(); //Itent就是我們要發送的內容intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND)); intent.setAction(flag); //設置你這個廣播的action,只有和這個action一樣的接受者才能接受者才能接收廣播sendBroadcast(intent); //發送廣播} }

每一句都注釋了的,就不要我再講了吧。一看就明白了。現在,運行程序看看效果吧。先注冊一下,然后每發送一次廣播上面的文字就會變化一次,表明已經接收到了廣播了。按取消注冊后你可以發現再按發送按鈕已經接收不到廣播了。

配置文件方式

配置和動態注冊的區別在上面已經說了,這種方式適合你的程序需要長期的監測某個廣播的情形,比如監測用戶的短信。注冊方式比較簡單,相當于上面的代碼只要接收的那部分就行了。不過要注意的是通過配置文件這種方式注冊廣播需要在單獨的一個類中繼承BroadReceiver,內部類是沒有用的。所以我們新建了一個broadCastReceiveByXml類并繼承了BroadReceive。代碼如下:

public class broadCastReceiveByXml extends BroadcastReceiver {@Overridepublic void onReceive(Context arg0, Intent arg1){Log.d("qlf", "broadcast receive by xml"); //因為不在主UI下,不好使用控件,所以我們這里打印到LOG里面查看效果}}

然后在AndroidManifest中的<activity></activity>節點之后我們添加一下代碼:

<receiver android:name="com.qlf.broadCast.broadCastReceiveByXml"><intent-filter><action android:name="com.qlf.broadCastFlag"></action></intent-filter> </receiver>

receiver中的android:name就是我們在程序中的那個接收廣播的類。下面的intent-filter和我們講到的功能類似,而這個action就是上面的那個flag啦。現在我們運行程序,發現同樣可以實現上面的功能。運行的結果如下:

除了使用我們自己發送廣播,android也內置了許多廣播。比如我們上面提到的來了消息的時候android會發送一個action名為“android.provider.Telephony.SMS_RECEIVED”的廣播,這個時候如果我們想要接受這個廣播只要將配置文件中的那個action設置為上面這個字符串就能接收到消息信息了。android包括了許多其他的廣播action,有興趣的同學到網上搜搜就有了。這里就不再舉例了。

源碼下載

? ? ? ?下載

總結

以上是生活随笔為你收集整理的Android之旅---广播(BroadCast)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩av网站大全 | 一级黄色片免费在线观看 | jizzjizz在线| 国产精品福利一区二区 | 中文字幕123 | 伊人国产在线观看 | 国产视频aaa | 91小视频在线 | 男人喷出精子视频 | 色老头在线观看 | 精品一区二区三区在线免费观看 | 日韩欧美综合久久 | 亚欧日韩av| 国产91av视频 | 久久久久99精品成人片毛片 | 成人综合社区 | 丰满护士巨好爽好大乳 | 成年人黄视频 | 激情综合网av| 亚洲图片欧美在线看 | 超碰免费在线观看 | 黄色一区二区三区四区 | 天天躁日日躁狠狠躁av麻豆男男 | 久久久久久91亚洲精品中文字幕 | 深夜福利91 | 美日韩在线视频 | 中文字幕免费高 | 亚洲欧美一区二区三区在线观看 | 97视频一区二区三区 | 日韩不卡视频在线观看 | 爱情岛论坛永久入口 | 亚洲AV不卡无码一区二区三区 | 国产123区在线观看 91国产一区二区 | 狠狠操亚洲 | sese欧美 | 97色在线观看 | 日韩精品在线看 | 天堂网国产 | 国产伦精品一区二区三区四区免费 | 日韩av免费播放 | 福利一区二区视频 | 国产一区二区三区四区在线观看 | 夜间福利网站 | 久久久久无码国产精品一区 | 香蕉一区二区 | 午夜老司机福利 | 欧美 国产 精品 | 日韩中出 | 日本高清视频在线 | av免费在线网站 | 99re热在线视频 | 国产精品视频网站 | 国产妇女乱一性一交 | 欧美一级黄色大片 | 日本少妇电影 | 亚洲AV无码成人国产精品色 | 麻豆av一区二区三区久久 | 国产人妻大战黑人20p | 97精品久久| 日本高清视频在线 | 99热99re6国产在线播放 | 岳奶大又白下面又肥又黑水多 | 丰满人妻老熟妇伦人精品 | 欧美xo影院 | 性猛交ⅹxxx富婆video | 欧美激情啪啪 | 欧美精品第二页 | 网站毛片| 亚洲经典av| 天堂福利在线 | 国产精品啊啊啊 | 丰满少妇熟乱xxxxx视频 | 国产精品一区二区性色av | xxxx国产视频 | 欧美久久激情 | 尤物视频在线观看国产性感 | 麻豆婷婷 | 欧美国产一级片 | 深爱综合网 | 日韩高清不卡 | 性淫bbwbbwbbw| 日本成人社区 | 久久爰 | 青青草久 | 海角国产乱辈乱精品视频 | 狠狠干亚洲色图 | 四虎成人永久免费视频 | 久久久成人精品一区二区三区 | 伊人色综合久久天天 | 综合一区 | 美国少妇在线观看免费 | 欧美一区二区在线免费观看 | 欧美三级 欧美一级 | 日韩欧美在线视频播放 | 香蕉av一区二区 | 天堂av√| 成年人小视频在线观看 | 6699av| 丰满人妻中伦妇伦精品app |