使用 Android LiveData我希望能够在和回调中取消注册和注册许多BroadcastReceiver
s 。所以我想做这样的事情:onInactive()
onActive()
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 有何看法?这里有一个使用它的例子