android跨类跨界面传递数据EaseMessage

来源:互联网 发布:淘宝正品运动鞋货源 编辑:程序博客网 时间:2024/06/04 01:34

主要类:

/** * 此类可进行对象的跨类,跨线程发送,有利于数据的快速传输。<br> * 有以下几个作用:<br> * 1.可以进行类之间数据传递<br> * 2.可以在不同的线程间进行数据传递<br> * 3.可以方便的实现应用内远程数据传递,可以少量代替使用广播发送数据 */public class EasyMessage{private static List<ListenerBean> list=new ArrayList<ListenerBean>();private static MHandler mHandler=new MHandler();private EasyMessage(){}/** * 发送对象 * @param key 发的key,接收时需要根据这个值进行接收 * @param value 发送的对象 */public static void sendMessage(String key,Object value){if(!key.equals("")&&value!=null){Message msg=new Message();ListenerBean lb=new ListenerBean();lb.key=key;lb.obj=value;msg.obj=lb;mHandler.sendMessage(msg);}}/** * 注册对象接收监听器 * @param key 接收的key值,要和发送的key匹配 * @param onMessage 接收对象的回调接口 */public static void registerMessageListener(String key,OnMessageListener onMessage){add(key,onMessage);}/** * 取消注册对象接收监听器,这个方法一定要调用,否则会出现内存泄露 * @param onMessage 接口时注册的回调接口 */public static void unregisterMessageListener(OnMessageListener onMessage){remove(onMessage);}/** * 内部处理消息并进行分发的类 */private static class MHandler extends Handler{@Overridepublic void handleMessage(Message msg) {ListenerBean lbean=(ListenerBean) msg.obj;for (ListenerBean lb : list) {if(lb.key.equals(lbean.key)){((OnMessageListener)lb.obj).onMessage(lbean.obj);}}}}/** * 添加监听数据和key * @param key * @param listener */private static void add(String key,OnMessageListener listener){if(listener!=null&&!key.equals("")){ListenerBean lb=new ListenerBean();lb.key=key;lb.obj=listener;list.add(lb);}}/** * 移除一条能匹配到监听器的数据 * @param listener */private static void remove(OnMessageListener listener){if(listener!=null){for (ListenerBean lb : list) {if(lb.obj.equals(listener)){list.remove(lb);break;}}}}}
数据类:
public class ListenerBean {public String key;public Object obj;}
接口类
public interface OnMessageListener {public void onMessage(Object msg);}
使用:

public class Demo {public Demo(){//发送EasyMessage.sendMessage("flag", "Demo");//接收EasyMessage.registerMessageListener("flag", mListener);}//处理消息public OnMessageListener mListener =new OnMessageListener() {public void onMessage(Object msg) { System.out.println(msg+"");//打印Demo}};//当不需要时一定要调用unregisterMessageListener方法public void Distory(){//取消接收EasyMessage.unregisterMessageListener(mListener);}}

代码已托管到github上:https://github.com/cn-xuqing/EaseMessage

也可在CSDN上下载jar文件:http://download.csdn.net/download/u012800952/10050427


原创粉丝点击