在写自定义view时遇到需要刷新数据时,可以利用接受广播来改变数据,那么在自定义view中如何接受广播?
自定义view中给我们提供了两个函数,分别是onAttachedToWindow和onDetachedFromWindow;通过测试发现他们的执行顺序是onAttachedToWindow、onDraw、onDetachedFromWindow;所以我们在onAttachedToWindow中注册广播,在onDetachedFromWindow中解除注册,不过要注意的是在定义广播时需要添加final字段,具体代码如下:
private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//do something
}
};
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("xxx");
mContext.registerReceiver(myReceiver, intentFilter);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mContext.unregisterReceiver(myReceiver);
}