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(),报错大概是这个原因吧

TTcloud(月$70)E3-1270V3 8GB内存 10Mbps带宽 ,日本独立服务器

关于TTCLOUD服务商在今年初的时候有介绍过一次,而且对于他们家的美国圣何塞服务器有过简单的测评,这个服务商主要是提供独立服务器业务的。目前托管硬件已经达到5000台服务器或节点,主要经营圣何塞,洛杉矶以及日本东京三个地区的数据中心业务。这次看到商家有推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。内存CPU硬盘流量带宽价...

百驰云(19/月),高性能服务器,香港三网CN2 2核2G 10M 国内、香港、美国、日本、VPS、物理机、站群全站7.5折,无理由退换,IP免费换!

百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...

零途云:香港站群云服务器16IP220元/月,云服务器低至39元/月

零途云(Lingtuyun.com)新上了香港站群云服务器 – CN2精品线路,香港多ip站群云服务器16IP/5M带宽,4H4G仅220元/月,还有美国200g高防云服务器低至39元/月起。零途云是一家香港公司,主要产品香港cn2 gia线路、美国Cera线路云主机,美国CERA高防服务器,日本CN2直连服务器;同时提供香港多ip站群云服务器。即日起,购买香港/美国/日本云服务器享受9折优惠,新...

handlemessage为你推荐
身份证正反面图片身份证正反两面的照片能做什么决策树分析简述决策树方法的基本内涵网络审计网络安全审计系统的背景小四号字word里的小四号字在Photoshop里是指多少点字体?12种颜色油画的基本12种颜色是什么模式识别算法算法是编程么?考研学模式识别方向,编程多么?模式识别算法模式识别的简史腾讯技术腾讯QQ是谁研发的?在那一年上市的?棋牌论坛三个知名的游戏相关论坛,要求有网址的!币众筹众筹是什么意思
免费二级域名 宿迁服务器租用 美国vps 过期域名抢注 sharktech 174.127.195.202 win8.1企业版升级win10 天猫双十一抢红包 网页背景图片 主机合租 免费网站申请 免费mysql 谁的qq空间最好看 河南m值兑换 100m空间 双11秒杀 idc查询 服务器是干什么用的 网站加速软件 河南移动梦网 更多