### Broadcast Receiver
#### 1、廣播有幾種形式 ? 都有什么特點 ?
> * 參考回答:
> * 普通廣播:開發者自身定義 intent的廣播(最常用),所有的廣播接收器幾乎會在同一時刻接受到此廣播信息,**接受的先后順序隨機**;
> * 有序廣播:發送出去的廣播被廣播接收者**按照先后順序接收**,,同步執行的廣播,同一時刻只會有一個廣播接收器能夠收到這條廣播消息,當這個廣播接收器中的邏輯執行完畢后,廣播才會繼續傳遞,且優先級(priority)高的廣播接收器會先收到廣播消息,屬性相同時,動態注冊的廣播優先。**有序廣播可以被接收器截斷使得后面的接收器無法收到它;先接收的廣播接收者可以對廣播進行修改,那么后接收的廣播接收者將接收到被修改后的廣播**。
> * 本地廣播:僅在自己的應用內發送接收廣播,也就是只有自己的應用能收到,數據更加安全,效率更高,但只能采用**動態注冊**的方式;
> * 粘性廣播:這種廣播會**一直滯留**,當有匹配該廣播的接收器被注冊后,該接收器就會收到此條廣播;由于在Android5.0 & API 21中已經失效,所以不建議使用。
> * 推薦文章:
> * [Android四大組件:BroadcastReceiver史上最全面解析](https://www.jianshu.com/p/ca3d87a4cdf3)
> * 廣播接收者原理解析

#### 2、廣播接收者的兩種注冊方式 ?
> * 參考回答:
> 
>[success]注意:
在Android8.0系統之后,所有隱式廣播都不允許使用靜態注冊的方式來接收了。隱式廣播指的是那些沒有具體制定發送給哪個應用程序的廣播,大多數系統廣播屬于隱式廣播,但是極少數特殊的系統廣播目前仍然允許使用靜態注冊的方式來接收。詳見——[隱式廣播例外情況](https://developer.android.google.cn/guide/components/broadcast-exceptions)
#### 3、廣播發送和接收的原理了解嗎 ?(Binder機制、AMS)
> * 參考回答:
> * 廣播隊列傳送廣播給Receiver的原理其實就是將BroadcastReceiver和消息都放到BroadcastRecord里面,然后通過Handler機制遍歷BroadcastQueue里面的BroadcastRecord,將消息發送給BroadcastReceiver:
> * 
> * 所以整個廣播的機制可以總結成下面這張圖:
> 
>
> * 推薦文章:
> * [廣播的底層實現原理](https://www.jianshu.com/p/02085150339c)