|
從現(xiàn)實(shí)生活中理解廣播機(jī)制
一聽到廣播我們第一感覺就會(huì)聯(lián)想到小時(shí)候村里面的廣播,每逢村里有什么活動(dòng)都是通過廣播發(fā)送的。收聽收音機(jī)也是一種廣播,在收音機(jī)中有很多個(gè)廣播電臺(tái),每個(gè)廣播電臺(tái)播放的內(nèi)容都不相同。接受廣播時(shí)廣播(發(fā)送方)并不在意我們(接收方)接收到廣播時(shí)如何處理。好比我們收聽交通電臺(tái)的廣播,電臺(tái)中告訴我們現(xiàn)在在交通狀況如何,但它并不關(guān)心我們接收到廣播時(shí)做如何做出處理,這不是廣播應(yīng)該關(guān)心的問題,OK,到這里我們從生活中的一些小例子淺淺的理解了一下廣播,那么Android 中的廣播是如何操作的呢?
Android 的廣播機(jī)制
在 Android 里面有各種各樣的廣播,比如電池的使用狀態(tài),電話的接收和短信的接收都會(huì)產(chǎn)生一個(gè)廣播,應(yīng)用程序開發(fā)者也可以監(jiān)聽這些廣播并做出程序邏輯的處理。下面我畫一張粗略的圖來幫助大家理解廣播的運(yùn)行機(jī)制。
Android 中有各式各樣的廣播,各種廣播在Android 系統(tǒng)中運(yùn)行,當(dāng)系統(tǒng)/應(yīng)用程序運(yùn)行時(shí)便會(huì)向 Android 注冊(cè)各種廣播,Android 接收到廣播會(huì)便會(huì)判斷哪種廣播需要哪種事件,然后向不同需要事件的應(yīng)用程序注冊(cè)事件,不同的廣播可能處理不同的事件也可能處理相同的廣播事件,這時(shí)就需要Android 系統(tǒng)為我們做篩選。
案例分析:
一個(gè)經(jīng)典的電話黑名單,首先通過將黑名單號(hào)碼保存在數(shù)據(jù)庫里面,當(dāng)來電時(shí),我們接收到來電廣播并將黑名單號(hào)碼與數(shù)據(jù)庫中的某個(gè)數(shù)據(jù)做匹配,如果匹配的話則做出相應(yīng)的處理,比如掛掉電話、比如靜音等等。
Demo 分析:
下面通過一個(gè)小DEMO 來講解一下廣播在Android 中如何編寫,在Demo中我們?cè)O(shè)置了一個(gè)按鈕為按鈕設(shè)置點(diǎn)擊監(jiān)聽通過點(diǎn)擊發(fā)送廣播,在后臺(tái)中接收到廣播并打印LOG信息。代碼如下:

public static final String ACTION_INTENT_TEST = "com.terry.broadcast.test";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ACTION_INTENT_TEST);
sendBroadcast(intent);
}
});
}
}
it知識(shí)庫:圖解 Android 廣播機(jī)制,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。