/**
* 事件分发器
* @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);
}
}
事件分发器
最新推荐文章于 2024-07-25 14:27:14 发布