一、BroadCast註冊方式android
靜態註冊:即在AndroidManifest.xml 文件中定義 xml
<receiver android:name=".BroadCastB">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE"></action>
</intent-filter>
</receiver>
動態註冊:get
IntentFilter filter=new IntentFilter("com.lyy.broadcast");
filter.setPriority(1);
registerReceiver(new BroadCastC(),filter);
二、廣播的發送方式it
普通廣播:sendBroadCast();io
有序廣播:sendOrderBroadCast(); 根據IntentFilter定義的優先級發送,優先級越高,越先收到廣播ast
傳遞數據:在廣播的傳遞過程當中,能夠使用 setResultData() 設置要傳遞的數據,並在下一個廣播中使用 getResultData()獲取值。。數據
本地廣播:LocalBroadCast,應用內廣播。爲此,Android v4兼容包中給出了封裝好的LocalBroadcastManager類,用於統一處理App應用內的廣播問題,使用方式上與一般的全局廣播幾乎相同,只是註冊/取消註冊廣播接收器和發送廣播時將主調context變成了 LocalBroadcastManager的單一實例。經過這種方式發送的廣播,只能經過LocalBroadcastManager動態註冊的的接收器才能接收穫得。filter
三、接收系統廣播兼容
當接收飛行模式的廣播是,發現用動態註冊沒法接收到,應儘可能使用靜態註冊。可是自從3.1以後,針對那些沒有啓動的應用,或者被強制中止的應用,就沒法接受到廣播,可是能夠設置flag 文件
FLAG_EXCLUDE_STOPPED_PACKAGES :排除已經中止的應用(默認)
FLAG_INCLUDE_STOPPED_PACKAGES :包括已經中止的應用
因爲系統廣播沒法修改其Intent,因此只能接受現實了。。。。。。。。