星期二, 3月 28, 2017
[ Android ] BroadcastReceiver用法 (一) 兩種註冊方式
BroadcastReceiver是用來監聽廣播的class,
而要實作他就有兩種做法,
一開始是要先繼承一個BroadcastReceiver的class,
然後裡面會處理,如果我收到哪種event我就會相對應去做什麼事,
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
然後我到底要怎樣設定才能收到我要的event???
有兩種做法
(一) 定義在AndroidManifest.xml內
宣告你的receiver在xml內,
<receiver android:name=".MyBroadcastReceiver"></receiver>
Reference
(二) regeisterReceiver註冊
第二種是用註冊的方式,
registerReceiver(bReceiver, intentFilter);
Reference
而使用第二種方式時記得要unregisterReceiver()。
總結:
1. 如果在xml裡註冊,那就會長時間在背景監聽,無法被註銷(unregisterReceiver)。
只要這個app被安裝後就會開始監聽了。
2.
使用registerReceiver()來註冊時,需要宣告intent filter來聲明說你需要哪些event,
之後再來註冊,可以被註銷。
3.
onReceiver()生命週期只有十秒,超過就會ANR,所以一些費時的事可以放到service去做。
Ref 1
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言