Android廣播分為兩個方面:廣播發(fā)送者和廣播接收者,通常情況下,BroadcastReceiver指的就是廣播接收者(廣播接收器)。廣播作為Android組件間的通信方式,可以使用的場景如下:
1.同一app內(nèi)部的同一組件內(nèi)的消息通信(單個或多個線程之間);
2.同一app內(nèi)部的不同組件之間的消息通信(單個進(jìn)程);
3.同一app具有多個進(jìn)程的不同組件之間的消息通信;
4.不同app之間的組件之間消息通信;
5.Android系統(tǒng)在特定情況下與App之間的消息通信。
從實現(xiàn)原理看上,Android中的廣播使用了觀察者模式,基于消息的發(fā)布/訂閱事件模型。因此,從實現(xiàn)的角度來看,Android中的廣播將廣播的發(fā)送者和接受者極大程度上解耦,使得系統(tǒng)能夠方便集成,更易擴(kuò)展。具體實現(xiàn)流程要點(diǎn)粗略概括如下:
1.廣播接收者BroadcastReceiver通過Binder機(jī)制向AMS(Activity Manager Service)進(jìn)行注冊;
2.廣播發(fā)送者通過binder機(jī)制向AMS發(fā)送廣播;