android 中每個程式都可以對自己需要的廣播進行註冊,這樣的話就能就收到註冊廣播所傳送的內容。
這些廣播可以是系統的也可以其他應用程式的。
廣播分兩種型別:
標準廣播:完全非同步的廣播,發出廣播後所有註冊這個廣播的程式都會在同一時刻收的這條廣播。
有序廣播:是一種同步執行的廣播,在廣播發出後同一時刻只能有乙個廣播接收器接收這條廣播,只有這個接收器中的邏輯執行完畢後,廣播才會繼續傳遞。廣播是有先後順序的,優先順序高的廣播接收器先接收到廣播,可以通過來設定優先順序,並且還可以通過
abortbroadcast();
將這條廣播截斷。
註冊廣播的兩種方式:動態 註冊、靜態註冊
動態註冊可以自由的控制註冊和登出,但是必須得在程式執行之後才可以接收到廣播。首先宣告網路許可權
建立乙個networkchangereceiver類繼承自broadcastreceiver
class networkchangereceiver extends broadcastreceiver else
}}
然後mainactivity重註冊廣播
private networkchangereceiver networkchangereceiver; //接收器
@override
protected void oncreate(bundle s**edinstancestate)
@override
protected void ondestroy()
未啟動程式的情況下就可以接收到廣播首先宣告許可權
通過android studio 來快捷的建立乙個廣播接收器。
右鍵包名 --》new--》other--》broadcast receiver ,接著會彈出建立視窗,我們可以設定兩個屬性,
這兩個屬性分別是:
exported :是否允許這個廣播接收器接收本程式以外的廣播;接著就幫我們建立好了 myreceiver,enabled :是否啟用這個廣播接收器。
public class myreceiver extends broadcastreceiver
@override
public void onreceive(context context, intent intent)
}
我們只需要在 onreceive() 寫入我們想要執行的邏輯就行。並且清單檔案中自動建立了註冊**注意:onreceive()方法中不要在執行過多邏輯或者耗時操作,而且該方法中不允許開啟執行緒,
android:name 指定註冊哪乙個廣播接收器在
中新增我們要監聽的 action
intent intent=new intent("com.tiger.broadcasttest.mytest");
sendbroadcast(intent);
這樣的話所有監聽com.tiger.broadcasttest.mytest
這條廣播的接收器都會受到這條訊息。
另外因為我們是通過intent進行傳遞的,我們還可以攜帶一些資料給其他廣播接收器。
intent intent=new intent("com.tiger.broadcasttest.mytest");
sendorderedbroadcast(intent,null);
4.receiver 中開啟活動
如果想要在廣播接收器中開啟活動需要 在intent中新增 flag_activity_new_task,否則會報錯,因為需要乙個棧來儲存開啟互動
@override
public void onreceive(context context, intent intent)
5.receiver 中開啟服務@override
public void onreceive(context context, intent intent)
Android四大元件之廣播
有序廣播 普通廣播不能中斷,所有監聽這個廣播的都能收到資訊。有序廣播可以中斷。粘性廣播 粘性廣播要為了解決,在傳送廣播,在傳送廣播之後,動態註冊的接收者,也能收到廣播。生命週期 廣播收者的生命週期是非常短暫的,在接收到廣播的時候建立,onreceive 方法結構之後銷毀。開機啟動 android.i...
四大元件(四) content provider
content provider相當於是程式與程式之間的介面。讓原本不可能通訊的程式,通過內容提供者這個橋梁變得可以通訊。定義乙個類 繼承 contentprovider public class backdoor extends contentprovider 註冊contentprovider ...
android 四大元件
1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...