事件分发器

/**
 * 事件分发器
 * @author wtw
 * 2015-12-10下午5:39:18
 */
public class MyEventListener {
	
	private static Map<Integer, ArrayList<WeakReference<IEventListener>>> mEventMap=
			new HashMap<Integer, ArrayList<WeakReference<IEventListener>>>();//将一个事件  和多个监听器接口进行绑定
	
	//添加监听器
	public static void addListener(int eventType,IEventListener listener){
		ArrayList<WeakReference<IEventListener>> list=mEventMap.get(eventType);
		if(list==null)
			list=new ArrayList<WeakReference<IEventListener>>();	
		//判断某一个监听器是否已经在这个事件里面进行绑定了
		for (WeakReference<IEventListener> weakReference:list) {
			IEventListener iEventListener=weakReference.get();
			if(iEventListener!=null&&iEventListener.equals(listener)){
				return;
			}
		}
		WeakReference<IEventListener> wrf=new WeakReference<IEventListener>(listener);
		list.add(wrf);
		mEventMap.put(eventType, list);
	}
	
	//移除没有用的监听器
	public static void removeListener(int eventType,IEventListener listener){
		ArrayList<WeakReference<IEventListener>> list=mEventMap.get(eventType);
		if(list==null)
			return;
		for (int i = 0; i < list.size(); i++) {
			IEventListener iEventListener=list.get(i).get();
			if(iEventListener!=null&&iEventListener.equals(listener)){
				list.remove(i);
				return;	
			}
		}
	}
	
	//激活监听器
	public static void fireEvent(Message msg){
		ArrayList<WeakReference<IEventListener>> list = mEventMap.get(msg.what);
		if(list!=null){
			for (int i = 0; i < list.size(); i++) {
				IEventListener listener=list.get(i).get();
				if(listener!=null){
					listener.onEvent(msg);
				}
			}
		}
	}
	
	
	//监听器接口
	public interface IEventListener{
		void onEvent(Message msg);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值