-
Notifications
You must be signed in to change notification settings - Fork 438
Event Producer
贾俊辉 edited this page Jun 9, 2018
·
2 revisions
事件生产者,设计的目的是为了让外部事件引入,服务于视图。
框架内包含了一个网络状态事件生产者,您可以通过配置引入。
如果您视图内有电量的显示或者有弹幕的需求等,您可以考虑使用事件生产者来处理数据和事件分发。
网络状态事件生产者示例:
public class NetworkEventProducer extends BaseEventProducer {
//...
private Handler mHandler = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case MSG_CODE_NETWORK_CHANGE:
int state = (int) msg.obj;
//...将网络状态发送出去
getSender().sendInt(InterKey.KEY_NETWORK_STATE, state);
PLog.d(TAG,"onNetworkChange : " + state);
break;
}
}
};
//...
public NetworkEventProducer(Context context){
//...
}
//...
public static class NetChangeBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...
//post state message
}
//...
}
}
建议:
如果生产的事件属于标量或者标志请尽量使用key-value形式发送数据。
如果生产的事件属于频繁型的事件,请使用sendEvent(int eventCode, Bundle bundle, IReceiverGroup.OnReceiverFilter receiverFilter)方法发送,您可以过滤仅需要接收事件的视图以优化性能。