Handler发送消息
Handler发送消息小结
- obtainMessage()得到一个Message对象。
创建一个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) {
......
}
}
};
Handler发送消息的更多相关文章
- [Android]Handler的消息机制
最经面试中,技术面试中有一个是Handler的消息机制,细细想想,我经常用到的Handler无非是在主线程(或者说Activity)新建一个Handler对象,另外一个Thread是异步加载数据,同时 ...
- Handler实现消息的定时发送
话不多说,直接上代码 private Handler mHandler = new Handler() { @Override public void handleMessage(Message ms ...
- (原)Android在子线程用handler发送的消息,主线程是怎么loop到的?
来自知乎:https://www.zhihu.com/question/48130951?sort=created 大家都知道Android的Looper是ThreadLocal方式实现,每个线程 ...
- 使用Handlerf发送消息或使用Handler轮询时,报错IllegalStateException:This message is already in use.;
java.lang.IllegalStateException: { when=-107ms what=9 obj=com.saicmaxus.maxuslife.model.CarInfo@be47 ...
- Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...
- Android Handler类 发送消息-post()和postDelay(), Looper讲解
https://blog.csdn.net/weixin_41101173/article/details/79701832 首先,post和postDelay都是Handler的方法,用以在子线程中 ...
- android handler传递消息机制
当工作线程给主线程发送消息时,因为主线程是有looper的,所以不需要初始化looper,注意给谁发消息就关联谁的handler,此时用的就是主线程的handler handler会把消息发送到Mes ...
- Thread+Handler 线程 消息循环(转载)
近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子. andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图 ...
- Android 主线程和线程之间相互发送消息
通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带L ...
随机推荐
- 一个效果很华丽的仿桌面APP,却胜似Launcher
开发Android APP的同学是否对于Launcher实现的绚丽效果而痴迷呢?什么,连Android Launcher是什么都不知道.好吧,拿起侬的手机,在解锁后的首页界面上左右滑动滑动,体验体验, ...
- jy
222 DROP TABLE t_vhl_jy_car; CREATE TABLE t_vhl_jy_car( VEHICLE_JY_CODE ) PRIMARY KEY, VEHICLE_CODE ...
- IMAQdx和IMAQ
NI-IMAQdx driver software gives you the ability to acquire images with IEEE 1394 and GigE Vision cam ...
- 关于缺省路由传递问题的探讨(下)[ip default-network、ip default-gateway等]
之前文章介绍的是没有路由协议的环境下,那么在有路由协议的环境下: ip default-network IGRP/EIGRP: IP Default-Network所指定的网络必须在EIGRP进程中通 ...
- Maven Archetype Plugin
使用Archetype的一般步骤 命令——mvn archetype:generate 输入命令后,Archetype插件会输出一个Archetype列表供用户选择:选择自己想要使用的Archetyp ...
- POJ1014Dividing(DP)
http://poj.org/problem?id=1014 最简单之多重背包 #include <map> #include <set> #include <stack ...
- shell切换用户执行后面语句 su与su -的区别
关于su和su -的区别,切换用户是可以使用su tom或者su - tom来实现,但是两者有区别,su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换 ...
- Hadoop on Mac with IntelliJ IDEA - 9 解决Type mismatch in value from map问题
修改陆喜恒. Hadoop实战(第2版)5.3排序的代码时遇到IO异常. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.5, Hadoop 1.2.1 异常具体信息如下 ...
- ARM Cortex-M instructions
ARM Cortex-M instruction sets ARMCortex-M Thumb Thumb-2 Hardwaremultiply Hardwaredivide Saturatedmat ...
- Linux进程通信之System V消息队列
System V消息队列是Open Group定义的XSI,不属于POSIX标准.System V IPC的历史相对很早,在上个世70年代后期有贝尔实验室的分支机构开发,80年代加入System V的 ...