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
阅读全文
0 0
- android跨类跨界面传递数据EaseMessage
- Android界面跳转与数据传递
- 跳转界面传递数据
- QT界面数据传递
- Android实现intent跳转界面传递数据(1)
- Android编程(2)android界面之间跳转并传递数据,调出短信发送界面
- C# 界面间数据传递
- ios界面之间传递数据
- Android -- 两个activity界面的切换, 显示Intent 和 隐式Intent,putExtra传递数据
- Android实现intent跳转界面传递数据(2)——onActivityResult方法接收返回值
- iPhone delegate 两界面传递数据(转)
- MATLAB GUI界面之间的数据传递
- iPhone delegate 两界面传递数据(转)
- iPhone delegate 两界面传递数据(转)
- 多界面间传递数据的模型
- ios界面跳转以及数据传递
- Matlab GUI 界面间数据的传递
- springMVC(3) 给界面传递数据
- mac下安装mongodb扩展用到的小坑以及正确安装
- Androidimageslider只显示圆点使用
- unittest 单元测试框架 web测试
- Linux自动备份mysql脚本
- CentOS7.4安装部署环境出现问题总结
- android跨类跨界面传递数据EaseMessage
- Visual Attribute Transfer through Deep Image Analogy论文阅读笔记
- Linux 配置静态IP
- git删除submodule
- [two-pointer ST表] HDU5289: Assignment
- 字符串最长回文算法
- Ajax data向URL 后台传参
- Altium快速批量修改Comment使之与Value相同
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍