BroadcastReceiver廣播的使用

2021-07-14 22:08:28 字數 2685 閱讀 3538

使用目的:通過廣播接收者,可以進行元件之間進行通訊、應用程式之間的通訊;

廣播是用來傳輸資料的;

廣播可以實現了不同的程式之間的資料傳輸與共享,因為只要是和傳送廣播的action

相同的接受者都能接受這個廣播。典型的應用就是

android

自帶的簡訊,**等等廣播(這些都是系統廣播);

系統也可能傳送廣播,

安卓是基於事件觸發的

,任何狀態的改變都會發出廣播,比如收到簡訊、收到**等;

接收系統廣播,接收自定義廣播;

廣播以內部類的形式實現,寫到activity裡面。

廣播分為有序廣播和無序廣播;

廣播的使用步驟

: 註冊廣播、取消廣播、傳送廣播、接收廣播;

一、註冊廣播:

訂閱廣播,

有兩種方法形式:

xml配置、**配置。註冊乙個廣播接收者。

xml檔案配置訂閱,不需要取消廣播的訂閱。註冊廣播需要設定

action,只有和註冊廣播的動作一致的接收者才能收到廣播。

通過**註冊廣播接收者:記住最重要的一行**;通過**註冊一定要取消廣播的訂閱。

mreceiver = new myreceiver();

intentfilter intentfilter = new intentfilter();

intentfilter.addaction("chenrushui"); //為intent設定動作

intentfilter.adddatascheme("cast");//這裡不需要: 新增資料約束。

registerreceiver(mreceiver, intentfilter);

二、取消廣播:

unregisterreceiver(mreceiver);

不取消廣播的訂閱,可能導致記憶體洩露。

@override

protected void ondestroy()

三、傳送廣播:

sendbroadcast(new intent());傳送普通廣播

;所有的接收者可以同時受到廣播;無法終斷。

sendorderbroadcast(new intent());傳送有序廣播

;有接收廣播的優先順序,而接收廣播的優先順序是由接收者自己指定的。接收廣播的優先順序的範圍是

-1000

到1000.

有序廣播可以終斷;但是有序廣播可以明確的指定接收者,這樣廣播就不可以終斷;

sendorderedbroadcast(intent, null, new myreceiver2(), new handler(), 0, null, null);

這兩個方法是上下文身上的方法;

通過廣播傳遞引數,廣播裡面傳遞的是intent

,可以攜帶資料

;傳送廣播時,要給intent

帶上action

,標識intent

的唯一性;

intent.setaction()

只有動作一致才能收到廣播。

在傳送廣播時,如果為intent

設定了data

,那麼對應的廣播接收者一定要設定

data

才能接收到廣播。

intentfilter.adddatascheme("cast")

findviewbyid(r.id.btn_1).setonclicklistener(new view.onclicklistener() 

});

四、接收廣播:

寫乙個類繼承自broadcastreceiver

,在子類的

onreceive()

方法中處理相應的業務邏輯。在廣播接收者收到廣播時,呼叫

onreceive()

方法。

public class myreceiver extends broadcastreceiver 

}}

有序廣播案例: 設定廣播的優先順序、中斷廣播的實現、abortbroadcast()、android:priority="-1000"

清單檔案中**:

myreceiver1中的**:

public class myreceiver1 extends broadcastreceiver 

//直接呼叫這個方法中斷廣播,優先順序低的廣播接收者就都收不到廣播了。

abortbroadcast();

}}

myreceiver2中的**:

public class myreceiver2 extends broadcastreceiver 

}}

接收的是否是系統廣播,怎麼判斷?

只能通過action判斷,並且**中沒有明確的廣播傳送者。

intentfilter filter = new intentfilter(connectivitymanager.connectivity_action);

BroadcastReceiver廣播機制

廣播傳送資訊,不管接受者是誰 首先要了解明白intent 物件,其中包括 action 傳送資料的方法 data 傳送的資料 最終目的是為了傳送資料,如果想要傳送乙個廣播,就必須呼叫 sendbroadcast intent 這個方法廣播給感興趣的廣播接收器,而在 androidmanifest.x...

BroadcastReceiver的基本使用

broadcastreceiver 廣播的一種實現 個人理解 當我們需要判斷電池是否沒電 收到簡訊 等一系列動作的時候,系統會傳送相應的廣播,通知系統中所有捕獲該廣播的軟體,軟體可以做相應的動作 1 靜態註冊方式,就是在androidmanifest.xml直接註冊 1 建立乙個類 並實現 broa...

我對BroadcastReceiver的簡單理解

1.在androidmanifest.xml中先註冊寫好的mybroadcastreceive 2.寫乙個類來extends類broadcastreceiver,並實現onreceiver方法 package org.lzm.android.broadcastreceiver import andr...