handlemessageAndroid 请问Handler的sendMessage执行后是立即执行handleMessage方法吗?

handlemessage  时间:2021-06-11  阅读:()

安卓handler机制的原理!

andriod提供了 Handler 和 Looper 来满足线程间的通信。

Handler 先进先出原则。

Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。

1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。

2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。

3) Message Queue(消息队列):用来存放线程放入的消息。

4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。

android中Handler这个方法super.handleMessage(msg) 是什么意思

android.os.Handler.java 中为空,实际啥也没做。

public void handleMessage(Message msg) { } 你应该是说你写的类XXXXHandler继承了android.os.Handler吧。

XXXXHandler里面重写的handleMessage里面调用super.handleMessage(msg),就是调用了上面的空函数。

Android的handler机制的原理?

Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。

这种机制通常用来处理相对耗时比较长的操作。

  一、Handler的定义:   主要接受子线程发送的数据, 并用此数据配合主线程更新UI。

  解释:当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件, 进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。

如果此时需要一个耗时的操作,例如: 联网读取数据, 或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭"。

这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,,Android主线程是线程不安全的, 也就是说,更新UI只能在主线程中更新,子线程中操作是危险的。

这个时候,Handler就出现了。

,来解决这个复杂的问题 ,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。

  二、Handler一些特点   handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程),它有两个作用:   (1)安排消息或Runnable 在某个主线程中某个地方执行;   (2)安排一个动作在不同的线程中执行。

  三、Handler实例   子类需要继承Hendler类,并重写handleMessage(Message msg) 方法, 用于接受线程数据。

handle是发出消息后就自动接收消息的吗?

我的理解: sendMessage(msg)和handleMessage(msg)分别在两个不同线程中,它们之间通过一个消息队列(MessageQueue)进行通信。

sendMessage(msg)是往队列插入数据 handleMessage(msg)是不断从队列中取出数据进行处理。

你说的是不是执行完sendMessage就立即调用handleMessage,这个不一定 handleMessage(msg)中一般都是比较耗时的操作(所以才要用多线程),sendMessage可能插入了100个数据,handleMessage才处理一个呢。

,如何吧这2个数据通过message发送给handle

private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if (msg != null) { Log.d("debug", "msg.arg1=" + msg.arg1); Log.d("debug", "msg.arg2=" + msg.arg2); Bundle data = msg.getData(); int i = data.getInt("int"); ArrayList array = data.getStringArrayList("array"); } } };private void packHandler() { ArrayList array = new ArrayList(); array.add("a"); array.add("b"); array.add("c"); Message msg = new Message(); msg.arg1 = 1;//可以放一个int msg.arg2 = 2;//可以放一个int Bundle data = new Bundle(); data.putStringArrayList("array", array); data.putInt("int", 3);//可以放一个int msg.setData(data);//可以放ArrayList型 mHandler.sendMessage(msg); }

Android 请问Handler的sendMessage执行后是立即执行handleMessage方法吗?

在你写的代码里,Handler的sendMessage执行后是立即执行handleMessage方法的 调试运行没有问题是因为你一步步调试时需要时间的,而这个时间保证了你可能接收到全部数据了,然后调试到handler.sendMessage的时候,在handleMessage()里面就不会报空之类的错误,但是运行的时候在你数据还没接收到的时候就执行了handleMessage(),报错大概是这个原因吧

物语云-VPS-美国洛杉矶VPS无限流量云windows大带宽100M不限流量 26/月起

物语云计算怎么样?物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是特惠活动为美国洛杉矶Cera机房的不限流量大带宽VPS,去程直连回程4837,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-v,因此并不会超售超开。一、物语云官网点击此处进入物语云...

HostYun:联通AS9929线路,最低月付18元起,最高500Mbps带宽,洛杉矶机房

最近AS9929线路比较火,联通A网,对标电信CN2,HostYun也推出了走联通AS9929线路的VPS主机,基于KVM架构,开设在洛杉矶机房,采用SSD硬盘,分为入门和高带宽型,最高提供500Mbps带宽,可使用9折优惠码,最低每月仅18元起。这是一家成立于2008年的VPS主机品牌,原主机分享组织(hostshare.cn),商家以提供低端廉价VPS产品而广为人知,是小成本投入学习练手首选。...

HTTPS加密协议端口默认是多少且是否支持更换端口访问

看到群里网友们在讨论由于不清楚的原因,有同学的网站无法访问。他的网站是没有用HTTPS的,直接访问他的HTTP是无法访问的,通过PING测试可以看到解析地址已经比较乱,应该是所谓的DNS污染。其中有网友提到采用HTTPS加密证书试试。因为HTTP和HTTPS走的不是一个端口,之前有网友这样测试过是可以缓解这样的问题。这样通过将网站绑定设置HTTPS之后,是可以打开的,看来网站的80端口出现问题,而...

handlemessage为你推荐
宝应中学宝应县有哪些高中水晶易表如何获取和安装水晶易表Xcelsius2008自定义表情手机QQ自定义表情怎么添加数据统计分析表怎样建立数据透视表和数据分析表?assemblyinfoLOL的 X、L、CS 是什么意思超级播放器那种电影网站就是那种不需要下载播放器可以直接看kjavaKJAVA业务信息费是什么东西啊,我怎么会被莫莫名其妙的扣掉11元啊河北云办税厅用小度怎么打开河北教育资讯云平台?腾讯贴吧QQ应该有贴吧的吧?那怎样进QQ贴吧?在(=@__@=)哪里?网络备份怎样手动备份宽带帐号密码
出租服务器 抗投诉vps主机 域名备案批量查询 云网数据 私服服务器 国外服务器网站 http500内部服务器错误 debian7 免费ftp站点 500m空间 英文站群 我爱水煮鱼 服务器维护方案 cn3 如何用qq邮箱发邮件 创建邮箱 帽子云排名 阿里云邮箱登陆地址 免费蓝钻 网页加速 更多