Android之廣播機制

Android之廣播機制

廣播機制簡介

Android提供了一套完整的API,允許應用程序自由的發送和接受廣播,發送廣播藉助於我們之前學過的:Intent,而接收廣播需要藉助於廣播接收器(Broadcast Receiver)

廣播的類型主要分爲兩種:標準廣播有序廣播

標準廣播:一種完全異步執行的廣播,在廣播發出之後,所有接收器幾乎在同一時刻接收到這條廣播消息,因此它們之間沒有任何的先後順序可言,這種廣播的效率會比較高,但是同時也意味着它無法被截斷的。標準廣播的工作流程圖如圖所示:
在這裏插入圖片描述
有序廣播: 一種同步執行的廣播,在廣播發出之後,同一時刻只會有一個廣播接收器能夠接收到這條廣播,當這個廣播接收器中的邏輯執行完畢後,廣播纔會繼續傳遞,所以這種廣播接收器是有先後順序的,優先級高的廣播接收器就可以先收到廣播消息,並且前面的廣播接收器還可以截斷正在傳遞的廣播,這樣後面的廣播接收器就無法收到廣播消息了。有序廣播的工作流程如圖所示:
在這裏插入圖片描述

接收系統廣播

Android內置了很多的系統級別的廣播,我們可以在應用程序中提通過監聽這些廣播來得到各種系統的狀態信息。比如手機開機、電池的電量、時間或時區發生改變等情況下發出一條廣播,要接受這些廣播,就需要使用廣播接收器。

廣播接收器可以自由的對自己感興趣的廣播進行註冊,註冊廣播的方式一般有兩種,在代碼中註冊稱爲動態註冊,在AndroidManifest.xml中註冊稱爲靜態註冊。

動態註冊監聽網絡變化

第一步:聲明網絡權限。Android系統爲了保護用戶設備的安全和隱私,做了嚴格的規定:如果程序需要進行一些對用戶來說比較敏感的操縱,就必須在配置文件中聲明權限纔可以,否則程序將會直接崩潰。

第二步: 在MainActivity活動中創建廣播接收器,並進行註冊

第三步:運行程序,會彈出:network is available的提示,接着點擊Home鍵,不要點擊Back鍵,回到主界面後,進入設置,打開手機的飛行模式,會彈出:network is unavailable

靜態註冊廣播接收器

動態註冊的廣播接收器可以自由的控制註冊與註銷,在靈活性方面有很大的優勢,但是它有一個缺點,就是必須要在程序啓動之後才能接收到廣播,因爲註冊的邏輯是寫在onCreate()方法中的。爲了讓程序在未啓動的情況下就能收到廣播,就需要使用到靜態註冊方式了。

第一步:先創建一個廣播接收器BroadCompleteReceiver,New—>Other—>Broadcast Receiver.

  • Exported:表示是否允許這個廣播接收器接收本程序以外的廣播

  • Enabled:表示是否啓用這個廣播接收器。

第二步:在創建的廣播接收器中設置一個Toast顯示,表示當這個廣播接收器接收到消息後彈出一個提示信息。

第三步:在AndroidManifest.xml中對創建的廣播接收器添加想要監聽的action,並進行權限聲明,注意:我們在創建BroadCompleteReceiver廣播接收器的時候,系統就已經自動在AndroidManifest.xml中註冊了。

Android系統啓動完成後會發出一條值爲:android.intent.action.BOOT_COMPLETED 的廣播,因此我們在< Intent-filter>標籤中添加相應的action。然後使用< user-permission>標籤中又添加一條:android.permission.RECEIVE_BOOT_COMPLETED權限。

第四步:關閉模擬器再打開,就會收到一個開機廣播

廣播發送及廣播類型

廣播發送

  • 廣播 這一實體本身以 intent 表示
  • 廣播的定義 = 相應廣播intent的定義
  • 廣播的發送:通過廣播發送者將此intent發送出去,根據不同類型的廣播調用相對應的send方法

廣播的類型

主要分爲一下四類:

  • Normal Broadcast(普通廣播):通常調用sendBroadcast(Intent)(Intent, String)方法發送
  • System Broadcast(系統廣播):發生各種事件時,系統自動發送
  • Ordered Broadcast(有序廣播):調用sendOrderedBroadcast(Intent, String)方法發送
  • Local Broadcast(本地廣播):調用LocalBroadcastManager.sendBroadcast(intent)方法發送
  • ‘Sticky Broadcast’(粘性廣播):已棄用(API 21)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章