廣播看完了,而後回過頭寫一下,其實就是分爲幾種廣播,安全
廣播分爲動態註冊和靜態註冊,,,廣播又分爲系統廣播和自定義廣播, ....發送方式又分爲,有序廣播和無序廣播....發送廣播又分爲直接send和利用localBroadcast.send兩種,全部這裏面的變化就有2*2*2*2種方式,我擦看着很簡單的事情,一下出來這麼多方式,函數
動態註冊:就是你在Activity中註冊,你須要一個BroadcastReceiver類的子類的實例 和 一個intentFilter中添加了action(你想要的系統廣播或者自定義廣播字符.) 這倆就是要做爲參數 傳給registerReceiver(BroadcastReceiver , intentfilter); 記住重寫ondestroy函數啊.調用unregisterReceiver(BroadcastReceiver)函數,參數主要那個BroadcastReceiver的子類.spa
特色:Activity不啓動這個廣播就不會被接手,這就是動態的意思設計
靜態註冊: 就是在manifest文件中進行註冊,添加一個Receiver,在裏面添加Intentfilter,而後添加Action,而後定義name(選系統的就是系統廣播,本身設計就是自定義廣播get
靜態註冊的程序不用運行,在後臺就會監聽廣播,it
系統廣播和自定義廣播就很少說了.惟一須要點明的事情就是:系統廣播你是不用寫觸發邏輯的,由於系統在特定狀況下就會發出,,,你只是一個接受者的姿態,(你只須要選擇是靜態註冊仍是動態註冊就好了),可是自定義廣播,你必須本身發送廣播才行,由於是自定義,嘿嘿.說道發送廣播.就 引入下面的這一段io
發送廣播方式:有序廣播和無序廣播ast
無序廣播:就是默認的發送形式,你只需聲明初始化一個intent("你的廣播特徵值");而後要使用sendBroadcast(intent);來發送就行了.後臺
有序廣播:就是程序在接受廣播時候,是有優先級的,優先級高的程序先接受,你只須要在發送的時候調用sendOrderedBroadcast(intent)就好了,若是你想阻斷廣播咋辦,只要在你想要的程序的Manifest文件中聲明Intentfilter中設置Android:priority= 100(越高越早);就會優先到你的程序基礎
.你在receive方法中最後調用abordBroadcast();方法廣播就被阻斷了.
針對自定義廣播:在發送的時候能夠選擇廣播類型
全局廣播:就是默認的廣播,全部程序均可以收到.發送的時候直接sendBroadcast();
本地廣播:就是隻有本程序本身能夠收到廣播,比較安全.須要使用LocalBroadcastManager.getinstance()得到LocalBroadcastManager()的實例而後調用.sendBroadcast();來發送:可是你註冊的時候必須使用動態形式來註冊,至於爲啥你還用我跟你解釋,表明你還不懂,由於只是你自定義本地廣播,只能使用localBroadcastManager.registerBroadcast();才行;unregisterBroadcast來取消註冊....
這就算所有基礎內容了下邊寫個例子:
例子不寫了鬱悶啊,我發現了.靜態註冊自定義廣播,不能設置彈窗,不然就只能弄一個透明的activity僞裝彈窗.動態註冊時沒啥異常,就這樣吧貼出鏈接吧