0
使用的Android LiveData我希望能夠在onInactive()
和onActive()
回調註銷和註冊許多BroadcastReceiver
秒。所以,我想要做這樣的事情:Android的架構組件LiveData - 如何broadcastReceivers綁定到生命週期
public class BroadcastRecieverLiveData extends LiveData<BroadCastReciever> {
private BroadcastReciever reciever;
private Context context;
public BroadcastRecieverLiveData(Context context) {
this.context = context;
}
@Override
protected void onActive() {
IntentFilter filter = new IntentFilter();
filter.addAction("SOME_ACTION");
filter.addAction("SOME_OTHER_ACTION");
reciever = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//do something based on the intent's action
}
};
registerReceiver(reciever, filter);
}
@Override
protected void onInactive() {
if (reciever != null) {
context.unregisterReceiver(reciever);
}
}
}
我想這可能是一個設計模式是清理的代碼,而不是中繼上onDestroy
的。你對這種使用LiveData有什麼想法?有使用它here
所以你寫的是內存泄漏,因爲活動場景永遠不會正確 – j2emanue
發佈@ j2emanue:通過'不應用context','activity'背景! – AndiGeeky
@ j2emanue:Refere codelab在答案中提到。它附有位置監聽器。相反,您可以使用您的廣播接收器! – AndiGeeky