星期二, 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

沒有留言: