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反註冊。
new mBroadcastReceiver() <<?
回覆刪除是不是多打了一個m?