廣播接收者 BroadcastReceiver

2021-05-27 15:14:27 字數 1454 閱讀 7923

廣播接收者(broadcastreceiver)

1,什麼是broadcastreceiver?

廣播接收者(broadcastreceiver)用於非同步接收廣播intent,廣播intent的傳送是通過呼叫context.sendbroadcast()、context.sendorderedbroadcast()或者context.sendstickybroadcast()來實現的。通常乙個廣播intent可以被訂閱了此intent的多個廣播接收者所接收.

2,context.startactivity()與context.sendbroadcast()方法傳送意圖的區別?

context.startactivity()傳送的意圖只能被乙個元件接收,當然這個元件可以是activity或service;

context.sendbroadcast()傳送的意圖可以被訂閱了此intent的多個廣播接收者所接收.只能是廣播收都接收.

3,如何實現乙個廣播接收者?

要實現乙個廣播接收者方法如下:

第一步:繼承broadcastreceiver,並重寫onreceive()方法。

public class incomingsmsreceiver extends broadcastreceiver {

@override public void onreceive(context context, intent intent) {

第二步:訂閱感興趣的廣播intent,訂閱方法有兩種:

第一種:使用**進行訂閱

intentfilter filter = new intentfilter("android.provider.telephony.sms_received");

incomingsmsreceiver receiver = new incomingsmsreceiver();

registerreceiver(receiver, filter);

當系統中傳送出來乙個意圖後,系統會根據該意圖的action自動去匹配系統中現有各個意圖過濾intent-filter,一旦發現有匹配的廣播收接者,則系統會自動呼叫該廣播接收者的onreceive方法.那麼我們就可以在這個方法做事了.

例如:當系統收到簡訊時,會發出乙個action名稱為android.provider.telephony.sms_received的廣播intent,該intent存放了接收到的簡訊內容,使用名稱「pdus」即可從intent中獲取簡訊內容。我們就可以寫乙個自已的廣播接收者並且action定義為android.provider.telephony.sms_received,那麼當有簡訊收到後我們就可以在onreceive方法裡面去獲取簡訊的內容了.

在廣播接收者做的事情不宜太複雜,耗時太長.大約在系統中broadcastreceive的生命週期約5秒.超時後將會被**,所以如果需要在onreceive方法做複雜的業務處理進最好開起乙個執行緒來完成工作.

廣播接收者

廣播被分為倆種不同的型別,普通廣播和有序廣播,普通廣播是完全非同步的。可以在同一時刻被所有的接收者收到。訊息傳遞的效率比較高,但是缺點是 接收者不能將結果傳遞給下乙個接收者。並且無法終止廣播intent的傳播。然後有序廣播是按照接收者申明的優先級別 申明在intent filter元素的androi...

廣播和廣播接收者

廣播和廣播接收者 1 廣播 就是一對多,就是傳送資訊 2 廣播接收者 就是接收廣播傳送的訊息並做處理 在android中,廣播接收者才是四大元件之一,廣播不是 廣播不會決定誰是接收者,只要是註冊了該廣播,那麼就能成為該廣播的接收者 接收系統傳送的廣播 比如,網路變化,開機狀態,手機的狀態 廣播接收者...

簡訊廣播接收者

package com.itheima.mobiesafe.receiver import com.itheima.mobiesafe.r import com.itheima.mobiesafe.service.gpsservice import com.itheima.mobiesafe.ser...