Android學習Broadcast Receiver 注意事項
一般去面試都可能會問到Android 的4大組件之一:Broadcast Receiver(廣播)
那麼面試中需要注意一些什麼東西呢?
1. 什麼是Broadcast Receiver (What)?
下面是Android Doc中關於BroadcastReceiver的概述:廣播接收器是一個專註於接收廣播通知信息,並做出對應處理的組件。很多廣播是源自於系統代碼的──比如,通知時區改變、電池電量低、拍攝了一張照片或者用戶改變了語言選項。應用程序也可以進行廣播──比如說,通知其它應用程序一些數據下載完成並處於可用狀態。應用程序可以擁有任意數量的廣播接收器以對所有它感興趣的通知信息予以響應。所有的接收器均繼承自BroadcastReceiver基類。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它並獲取消息。
2. 如何使用Broadcast Receiver (How)?
註冊廣播事件:註冊方式有兩種,一種是靜態註冊,就是在AndroidManifest.xml文件中定義,註冊的廣播接收器必須要繼承BroadcastReceiver;另一種是動態註冊,是在程序中使用Context.registerReceiver註冊,註冊的廣播接收器相當於一個匿名類。兩種方式都需要IntentFIlter。
發送廣播事件:通過Context.sendBroadcast來發送,由Intent來傳遞註冊時用到的Action。接收廣播事件:當發送的廣播被接收器監聽到後,會調用它的onReceive()方法,並將包含消息的Intent對象傳給它。onReceive中代碼的執行時間不要超過5s,否則Android會彈出超時dialog。
3. 廣播的分類?
廣播被分為兩種不同的類型:「普通廣播(Normal broadcasts)」和「有序廣播(Ordered broadcasts)」。普通廣播是完全非同步的,可以在同一時刻(邏輯上)被所有廣播接收者接收到,消息傳遞的效率比較高,但缺點是:接收者不能將處理結果傳遞給下一個接收者,並且無法終止廣播Intent的傳播;然而有序廣播是按照接收者聲明的優先順序別(聲明在intent-filter元素的android:priority屬性中,數越大優先順序別越高,取值範圍:-1000到1000。也可以調用IntentFilter對象的setPriority()進行設置),被接收者依次接收廣播。如:A的級別高於B,B的級別高於C,那麼,廣播先傳給A,再傳給B,最後傳給C。A得到廣播後,可以往廣播里存入數據,當廣播傳給B時,B可以從廣播中得到A存入的數據。Context.sendBroadcast()發送的是普通廣播,所有訂閱者都有機會獲得並進行處理。Context.sendOrderedBroadcast()發送的是有序廣播,系統會根據接收者聲明的優先順序別按順序逐個執行接收者,前面的接收者有權終止廣播(BroadcastReceiver.abortBroadcast()),如果廣播被前面的接收者終止,後面的接收者就再也無法獲取到廣播。對於有序廣播,前面的接收者可以將處理結果存放進廣播Intent,然後傳給下一個接收者。
4. 廣播的註冊有哪幾種?
註冊方式有兩種,一種是靜態註冊,就是在AndroidManifest.xml文件中定義,註冊的廣播接收器必須要繼承BroadcastReceiver;另一種是動態註冊,是在程序中使用Context.registerReceiver註冊,註冊的廣播接收器相當於一個匿名類。兩種方式都需要IntentFilter。
5. 廣播接收者的靜態註冊和動態註冊的區別?
靜態註冊的Broadcast Receiver可在你程序關閉後能繼續接收到信息,而動態註冊的Broadcast Receiver 則程序結束後就沒有了。所以你必須在onDestory 或者 onPause中取消廣播,不然會報異常。


※此去天津無坦途
※小V的婚禮札記:老公,我就在LAVIN玫瑰里?太陽公元辦婚禮了
※詩詞分享會後聽李姐奏古琴
※吃貨們都來對對號,看看你是什麼階段的吃貨?
※Logoist Mac和諧版
TAG:公眾號 |
※請注意Memcached DDoS攻擊!
※Kirkland的Bridle Trail公園發生綁架幼兒未遂 民眾外出注意安全
※谷歌搜索正在測試新的Material Design布局,你注意到了嗎?
※Cimatron編程注意的問題術語
※佳節來臨,注意飲食衛生,預防食物中毒 Food Poisoning
※息烽用iPhone注意了:iPhone大面積召回!你中招沒有?
※iPhone6Plus用戶請注意!免費換新機會來了
※狗狗控注意!Louis Vuitton 推可愛狗年限定系列
※iPhone X注意了,iOS又出現新Bug!升級到iOS 也解決不了
※iPhone中國用戶注意了!蘋果iCloud和應用下載,今天或開始加速
※[MD PHOTO]韓國女團 少女注意報首爾舉行showcase
※The Isle基本操作及注意事項
※使用Windows phone7.5和8.0系統用戶注意,微軟已關閉通知服務!
※注意了!Supreme x Nike 聯名系列國內發售公告發布
※UNC&Adobe提出模塊化注意力模型MAttNet,解決指示表達的理解問題
※CorelDRAW 文件發印刷廠注意事項
※蘋果用戶注意啦!警惕新一輪App Store釣魚郵件
※注意!一大波Bling Bling 的春夏季彩妝新品即將來襲
※UNC&Adobe提出模塊化注意力模型,解決指示表達的理解問題
※你的iphone8已到貨,請注意查收