分爲標準廣播(Normal broadcasts)和有序廣播(Ordered broadcasts)java
標準廣播(Normal broadcasts):效率比較高,沒法攔截。全部的廣播接收器同時接收到。發送時調用sendBroadcast()方法android
有序廣播(Ordered broadcasts):優先級高的先接收到廣播,能夠進行攔截,也能夠順序傳遞下去。發送時調用sendOrderedBroadcast()方法。安全
直接在AndroidManifest.xml進行註冊spa
例如:.net
<receiver android:name=".broadcastTest.BootReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
代碼中調用registerReceiver(receiver,intentFilter)進行註冊線程
代碼中調用unregisterReceiver(receiver)進行註銷code
receiver參數爲自定義receiver的對象,intentFilter參數爲IntentFilter類的對象orm
繼承BroadcastReceiver類,實現onReceive方法。而後進行註冊xml
在onReceive方法中,不容許開啓線程,不能夠運行耗時操做,不然會進行報錯。因此接收器更多的是扮演一種能夠打開程序其餘組件的角色。對象
實現方式和標準廣播同樣。註冊的時候,設置priority屬性
能夠在優先級高的receiver中,調用abortBroadcast();阻止廣播繼續往下傳遞。
實現方式與標準廣播同樣。註冊和註銷的時候須要調用LocalBroadcastManager來對廣播
注意:本地廣播是不能夠經過靜態註冊的方法來接受的
本地廣播的優勢:
a、能夠明確知道發送的廣播不會離開咱們的程序,所以不擔憂數據泄密。
b、其餘程序沒法將廣播發送到咱們程序內部,所以不須要擔憂會有系統安全漏洞。
c、發送本地廣播會比全局廣播更加高效。
參考地址:https://blog.csdn.net/fengyuzhengfan/article/details/38439221
系統全部的廣播,在sdk/platforms下面,全部的android版本中有一個data文件夾,文件夾下面有一個broadcast_actions.txt的文件。
例如:sdk\platforms\android-28\data\broadcast_actions.txt
官網中比較詳細的講解:
https://developer.android.com/reference/android/content/Intent
https://www.kancloud.cn/bodhixu/broadcast/276505