Android中的四大元件之 Boradcast

2021-08-03 23:56:05 字數 1421 閱讀 3393

從mvc的角度考慮

程式間互通訊息(例如在自己的程式內中監聽系統**)

效率上(參考udp的廣播協議在區域網的方便性)

設計模式上(反轉控制項的一種應用,類你監聽者模式)

普通廣播:完全非同步的,所有的廣播接收者在同一時刻以未定義的順序執行,訊息傳遞的效率比較高。但缺點是:接收者不能將處理結果傳遞給下乙個接收者,並且無法終止廣播intent的傳播

順序廣播:所有廣播接收者按順序執行,其中乙個執行廣播接收者可以將結果傳遞給下乙個廣播接收者,也可以退出廣播以便於不將結果傳遞到下乙個廣播接收者,可以在清單檔案使用android:priority屬性來確定廣播接收者的優先順序,數越大優先級別越高,取值範圍:-1000到1000。也可以呼叫intentfilter物件的setpriority()進行設定),被接收者依次接收廣播,同一優先順序的接收者可以隨機順序執行。

context.sendbroadcast():傳送的是普通廣播,所有訂閱者都有機會獲得並進行處理。

context.sendorderedbroadcast():傳送的是有序廣播,系統會根據接收者宣告的優先級別按順序逐個執行接收者,前面的接收者有權終止廣播(通過broadcastreceiver.abortbroadcast()),如果廣播被前面的接收者終止,後面的接收者就再也無法獲取到廣播。對於有序廣播,前面的接收者可以將處理結果存放進廣播intent,然後傳給下乙個接收者。

intent intent=new intent();

intent.setaction("com.example.boradcastreceive.mainactivity");

intent.putextra("message", "你好");

sendbroadcast(intent);

動態註冊:非長駐性廣播,生命週期可控制

activity的子類中使用registerreceiver()方法註冊,如下:

myboradcastreceive receiver=new myboradcastreceive();

intentfilter filter=new intentfilter("com.example.boradcastreceive.mainactivity");

registerreceiver(receiver, filter);

靜態註冊:長駐性廣播,一旦應用程式被安裝就能接收到廣播,生命週期不可控制

在清單檔案中標記中進行註冊,例如:

通過繼承broadcastreceiver抽象類實現廣播接收器,在廣播接收器中可以通過 abortbroadcast()終止廣播,用setresultextras()來傳送資料。

android 四大元件

1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...

Android 四大元件

activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...

android四大元件

android 四大元件 1.contentprovider contentprovider是什麼 android中的乙個應用元件 作為乙個引用元件的表現是生命週期方法 android中內容提供者 一般是內部儲存中的資料 contentprovider 物件的應用場合 例如 3.contentpri...