2010年12月1日 星期三

Android筆記_聽Broadcast與發送Broadcast

在課程一開始就說明Android應用程式有四大區塊:
1. Activity
2. Broadcast receiver
3. Service
4. Content provider

上一堂課終於進入了第二個區塊,也就是Broadcast,廣播顧名思義就是"告訴大家這邊有事情發生"?

感覺就很像上面這張圖,手機會去告訴現在發生了什麼事情,比如說簡訊進來了、電話進來了,而發送廣播的源頭可以來自於手機本身,或是某一個自製的Activity,就像是可以發送一個"Ola Good"的廣播;有註冊接收的Activity就會產生相對的反應(手舉起來)~~~ \@o@/

有幾個重點:
1. Broadcast並不是對有去接收該事件的人發送,而是對整個手機進行發送,他沒有預設要發送給誰。
2. 我們除了可以去收手機本身定義的Broadcast,也可以自己發送自己的。
3. 如果註冊了要接收某個Broadcast,在沒有反註冊前都會不斷的接收,也不會進入GC(GarbageCollection)流程。
4. Broadcast可以由Activity發送,也可以由Service發送。

所以,要怎麼發送?註冊接收?取消接收(反註冊)?

發送:
傳送一個名為OLA_ON_SERVICE_001的Broadcast

String OLA_BROATCAST_STRING = "OLA_ON_SERVICE_001";
Intent i = new Intent(OLA_BROATCAST_STRING);
i.putExtra("STR_PARAM1", "廣播訊息");
sendBroadcast(i);


註冊接收:
註冊去接收OLA_ON_SERVICE_001。

String OLA_BROATCAST_STRING = "OLA_ON_SERVICE_001";
IntentFilter mFilter01 = new IntentFilter(OLA_BROATCAST_STRING);
mReceiver01 = new mBroadcastReceiver(); //←實作一個BroadcastReceiver來篩選
registerReceiver(mReceiver01, mFilter01);


反註冊接收:

unregisterReceiver(mReceiver01);


***大衛老師建議:在OnResume註冊、在OnPause反註冊。

1 則留言:

Deltaguita Wu 提到...

new mBroadcastReceiver() <<?
是不是多打了一個m?

張貼留言