android廣播使用注意

2021-06-19 17:31:42 字數 1204 閱讀 8965

在某些場景下,應用內部進行資料傳遞需要使用到廣播。使用廣播進行資料傳遞必須注意以下幾點:

1、 應用傳送某個廣播時,系統會將廣播中的intent與系統中所有註冊的broadcastreceiver進行匹配,如果能匹配成功則呼叫相關的onreceive函式進行處理。

這裡存在2個問題: 

a、效能問題。每個廣播都會與所有broadcastreceiver進行匹配。

b、安全問題。廣播發出去的資料可能被其他應用監聽。

解決方式:

a、通過intent.setpackage指定包名,該廣播只會被指定應用接收

b、設定許可權。指定廣播的接收者必須具備對應的permission。  

2、 當應用註冊了broadcastreceiver之後,用來接收的廣播。

這裡也存在2個問題:

a、效能問題。系統有廣播傳送時會被用來與廣播進行匹配判斷。

b、安全問題。外界可以通過傳送大量指定action的方式進行暴力攻擊。

解決方式:

a、動態註冊的broadcastreceiver可以設定傳送者必須擁有指定的許可權才能給它傳送廣播。

b、靜態註冊的廣播可以設定android:exported="false"來表示對外不可見,不接收外部廣播。

當廣播僅限於應用內部進行傳遞時,上面的問題都可以使用localbroadcastmanager來解決。

android v4 相容包提供localbroadcastmanager工具類,可以通過它來進行程序內的廣播註冊與傳送,相比sendbroadcast(intent)傳送全域性廣播有如下好處:

1、 localbroadcastmanager傳送的廣播只會在本應用內進行傳遞,不會存在隱私資料洩露的風險。

2、 不用擔心外部偽造廣播進行暴力攻擊。

3、 更高效。

使用方式如下:

private localbroadcastmanager mlocalbroadcastmanager = localbroadcastmanager.getinstance(context);

public void sendlocalbroadcast(context context)

public void registerlocalbroadcastreceiver(context context)

public void unregisterlocalbroadcastreceiver(context context)

android 廣播的使用

1.broadcastreceive,廣播,android四大元件之一,顧名思義,只要發出了這個廣播,在這個頻率上就可以接受到這個廣播。2.廣播主要用於訊息通訊,可以用於不同的元件,不同的頁面,只要一方發出一方接收,就可以得到廣播,獲取資訊。廣播類屬於觀察者模式,極大程度的解耦了程式,只需要在一處發...

android 廣播的使用

android 廣播的使用 在activity中,註冊廣播的乙個demo。總共分3步 第一步 定義乙個broadcastreceiver廣播接收類 private broadcastreceiver mbroadcastreceiver new broadcastreceiver 第二步 註冊該廣播...

android廣播的使用

在activity中,註冊廣播的乙個demo。總共分3步 第一步 定義乙個broadcastreceiver廣播接收類 view plain private broadcastreceiver mbroadcastreceiver new broadcastreceiver 第二步 註冊該廣播 vi...