【发布时间】:2017-12-24 19:50:54
【问题描述】:
使用 Android LiveData 我希望能够在 onInactive() 和 onActive() 回调中取消注册和注册许多 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
【问题讨论】:
标签: android android-architecture-components android-livedata