Android:Handler消息传递机制

一、存在Handler类的背景:

当一个Android程序第一次启动时,Android会同时启动一个主线程(Main Thread),主线程主要负责处理与UI相关的事件。因此,可以理解为执行UI操作的线程就是主线程,这个主线程的执行是由onCreate()方法完成的。

当存在多个线程同时操作UI控件时,Android的UI被控局面就会产生失控现象,就是说UI操作存在线程安全问题。据此,Android规定:只允许UI线程(主线程)有权利修改UI组件。那么多线程机制中的其他任务线程(子线程、工作线程)又如何处理、修改、控制与UI相关的事件呢?这种情况下就产生了能在任务线程中发送消息、在主线程中获取、处理消息的Handler类。

二、Handler类的特点:

1.、传递Message,用于接受任务线程发送的消息(数据), 并用此数据配合主线程更新UI。
在Android中,对于UI的操作通常需要放在主线程中进行操作。如果在子线程中有关于UI的操作,那么就需要把数据消息作为一个Message对象发送到消息队列中,然后,由Handler中的handlerMessage方法处理传过来的数据信息,并操作UI。

注意:Handler对象是在主线程中初始化的,因为它需要绑定在主线程的消息队列中。

Handler类中sendMessage(Message msg)方法实现发送消息的操作。 在初始化Handler对象时重写的handleMessage方法来接收Messgae并进行相关操作。

2、 传递Runnable对象。用于通过Handler绑定的消息队列,安排不同操作的执行顺序。

Handler对象在进行初始化的时候,会默认的自动绑定消息队列。利用类sendXXXX()方法,可以将Runnable对象发送到消息队列中,按照队列的机制按顺序执行不同的Runnable对象中的run方法。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值