package com.example.myobserver;
import android.os.Message;
import java.util.ArrayList;
import java.util.List;
/**
* Created by max on 2016/7/16.
* 根据观察者模式 封装的发送消息的机制
* 类似于EventBus
* 触发发送的时候,会遍历缓存中所有的观察者进行动作
* 不用的时候将观察者从集合中移除。
* type 是为了锁定 让哪一个观察者进行处理(type对应的进行处理,和发送请求类似)
*/
public class MessageDeliver {
private static List<OnHandleListener> list = new ArrayList<>();
private static android.os.Handler mHandler = new android.os.Handler() {
@Override
public void handleMessage(Message msg) {
for (OnHandleListener listener : list)
listener.onHandle(msg.what, msg.obj);
}
};
public static void sendMessage(int type, Object msg, long delay) {
Message message = new Message();
message.obj = msg;
message.what = type;
mHandler.sendMessageDelayed(message, delay);
}
public interface OnHandleListener {
void onHandle(int type, Object obj);
}
public static void addOnHandleListener(OnHandleListener listener) {
list.add(listener);
}
public static void removeOnHandleListener(OnHandleListener listener) {
if (listener != null && list.contains(listener)) list.remove(listener);
}
}