Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android:廣播接收器(BroadCastReceiver)要點隨筆。,

Android:廣播接收器(BroadCastReceiver)要點隨筆。,

編輯:關於android開發

Android:廣播接收器(BroadCastReceiver)要點隨筆。,


@@@描述         廣播接收器可以收到 Context.sendBroadcast或者Context.sendOrderedBroadcast發出的意圖(intent)。   @@@LocalBroadcastManager         如果你不需要誇應用發送廣播,建議你使用 LocalBroadcastManager, LocalBroadcastManager 是一個幫助類,幫助你方便的在當前應用中注冊廣播接收  器和發送廣播。並且和發送全局廣播比起來,他還有如下優勢: 1,不用擔心私有數據的安全性,因為發送的廣播不會讓除當前應用之外的其他應用接收到。 2,不用擔心其他應用會利用你的安全漏洞,因為其他應用不可能通過 LocalBroadcastManager向你發送廣播。 3,它比發送全局廣播更加高效。  LocalBroadcastManager的常用方法如下:
       @@@注冊         廣播接收器可以通過Context.registerReceiver()來動態注冊,還可以通過在 AndroidManifest.xml中添加<receiver> 標簽靜態注冊。           動態注冊方式:如果你在 Activity.onResume()注冊一個廣播接收器,你應該在 Activity.onPause()注銷這個它. (當Activity Pause的時候,你不會接受到廣播,如果你不在 Activity.onPause()中注銷,將會帶來極大的資源消耗。). 不要在Activity.onSaveInstanceState()中注銷一個廣播接收器, 因為該方法不會在用戶移動到歷史堆棧中其他Activity的時候被調用。                                          靜態注冊方式:                                                      其中:priority來設置優先級,類型為Integer類型,范圍為-1000~1000,在這個范圍中,值越大,優先級越高。           例子:                     自定義三個廣播接收器。                        1,                                                      2,                                                   3,                                                      4,在清單文件中注冊,並分別制定他們的優先級為1000,500,1;                                                               5,通過Context.sendBroadcast發送廣播。                                                                      結果為:                                              @@@廣播的類型:     1,普通廣播(Normal broadcasts ):普通廣播是由Context.sendBroadcast方法發送的。這種方式是完全異步的,在這種方式下,所有的廣播接收器都運行在一個無序的狀態下,經常是所有接收器同時接受到廣播,這種方式也更加高效,但是不能中斷。     2,有序廣播(Ordered broadcasts):有序廣播是由Context.sendOrderedBroadcast方法發送的,這種方式一次只能由一個接收器接收,所有的接收器輪流收到廣播,所以他可以傳播一個結果到下一個接收器,或者完全中斷一個廣播。接受的順序是由清單文件配置中priority來決定的,范圍為(-1000~1000)值越大,優先級越高,相同優先級的接收器以任意的順序收到廣播。   @@@有關安全性的思考。     考慮到廣播接收器是誇應用的特性,所以我們應該考慮到我們的自己的接收器不被其他應用濫用。     1,Intent的命名空間是全局的,所以Intent的action name和其他String參數要考慮唯一性,否則我們可能無意中和其他應用沖突。     2,動態注冊廣播接收器時,可以用權限來限制誰可以發送廣播給我們。     3,靜態注冊時,任何滿足你指定的intent-filters的廣播都可以向你發送廣播,我們可以使用指定android:exported="false"的屬性來阻止其他廣播發送給你。   @@@廣播接收器的生命周期注意     1,一個廣播接收器對象只是在其 onReceive(Context, Intent)方法被調用的時候才有效,一旦 onReceive(Context, Intent)方法的代碼呗返回,廣播接收器的對象將不再有效。這個主要的影響就是你能在 onReceive(Context, Intent)方法中執行什麼操作,任何有關異步的操作是無用的,因為當異步操作執行完成後, onReceive(Context, Intent)方法已經執行完,廣播接收器對象已不再有效或者被系統回收。     2,通常情況下,你不能在 onReceive(Context, Intent)方法中彈出一個對話框,或者綁定一個service,對於前者,你可以用NotificationManager 來代替,對於後者,你可以調用Context.startService() 方法來代替。對於耗時操作應該在Service中執行。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved