事件分发器
来源:互联网 发布:ios完整项目源码 编辑:程序博客网 时间:2024/06/10 13:20
/** * 事件分发器 * @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
- 事件分发器
- 事件分发器
- cocos2dx的事件分发器
- cocos2dx的事件分发器
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- 事件分发
- too many open files
- 使用HTML5来实现本地文件读取和写入
- Java学习笔记-修饰符可修饰的属性方法
- Swift语法之 ---- ?和!区别
- 线程与进程的区别和联系
- 事件分发器
- linux命令-zip
- linux服务器常用操作和命令
- 文本分类学习笔记(2)- 特征提取
- Android的文件读写小结
- C#上创建ActiveX步骤
- Android 三种Dialog 实现方式
- Hello Mybatis 01 第一个CRUD
- [分享]错误“应用程序Xcode的这个版本不能与此版本的OS X配合使用”以及Mac源码和IOS开发资料分享