Handler发送消息小结
2016-01-03 17:48
337 查看
obtainMessage()得到一个Message对象。
创建一个Message然后发送是这么写的:
性能优化后这样写:
相当于:
再简练一点(这段代码在创建的Message中只传入两个参数,并让handler延迟10ms发送消息):
至于接受消息,肯定是在handleMessage(Message msg)中:
给个实例看一看:
创建一个Message然后发送是这么写的:
Message msg = new Message(); msg.arg1 = 1; msg.arg2 = 2; msg.what = 3; msg.obj = Object; handler.sendMessage(msg);
性能优化后这样写:
Message msg = handler.obtainMessage(); msg.arg1 = 1; msg.arg2 = 2; msg.what = 3; msg.obj = Object; handler.sendMessage(msg);
相当于:
Message msg = handler.obtainMessage(int what,int arg1, int arg2, Object obj ) handler.sendMessage(msg);
再简练一点(这段代码在创建的Message中只传入两个参数,并让handler延迟10ms发送消息):
handler.sendMessageDelayed(handler.obtainMessage(int what,Object obj), 10);
至于接受消息,肯定是在handleMessage(Message msg)中:
Handler handler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); //接收Message发送的消息 msg.what msg.arg1 msg.arg2 msg.obj //这里msg.obj需要强转成你传过来的数据类型 } };
给个实例看一看:
public boolean onTouch(View view, MotionEvent event){ if(event.getAction() == MotionEvent.ACTION_UP) { handler.sendMessageDelayed(handler.obtainMessage(TOUCH_EVENT_ID,view), 10); } return false; } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); //msg.obj强转成View类型(传过来的obj是一个View类型的参数) View scroller = (View)msg.obj; if(msg.what==TOUCH_EVENT_ID) { ...... } } };
相关文章推荐
- 工厂方法模式
- java18.IO操作------使用带缓冲的字节流读写数据
- response对象
- 九度OJ 1386(最值) 1387(递归) 1388(递归) 1389(递归) 1390(递归)
- Astyle编程语言格式化工具的中文说明
- 测试框架nunit之assertion断言使用详解
- notepad++如何修改当前目录为工作目录
- Lua使用笔记
- C# Cache何时使用及使用方法
- ABP理论学习之Javascript API(理论完结篇)
- web design for developers—写给程序员的web设计书--总结
- Android项目在Eclipse下的混淆
- Python Web中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
- Linux管道思想
- bzoj1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
- WCF的一个小Demo
- java Struts2,Spring,Hibernate的整合步骤
- liunx 下把SMB加入自动启动
- php输出杨辉三角