Handler过程剖析-傻瓜都能看懂的过程图

本文通过图片的方式来剖析handler的发送和处理消息的过程,文中着重讲解过程,需要你先了解MessageQueue,Looper,Message,Handler


Looper,一个循环类,prepare后线程变成一个looper线程,维护着一个MessageQueue对象,用来存放Handler发送的Message


MessageQueue
MessageQueue正如名字,是个消息队列,用于临时保存Handler的message和取出message,主要操作有两个,添加和读取

添加:enqueueMessage(Message msg,long when),简单的将消息添加到MessageQueue

读取:next(),返回message对象,返回给looper处理,该方法是一个死循环,一直读取数据,如果没有就会一直阻塞,有就返回message,
  • what:int型,最主要的属性,用于指定消息的类型,这算是Message唯一一个必须指定的值

  • arg0,arg1:两个int型值,一般用来传递一些progress,或者一些简单的整型

  • obj:可以传递一些复杂一些的object

  • data:Bundle型,这个就不用多解释了,传递较多种数据的时候肯定会用到它

  • callback:Runable型,Handler.post(Runnable)内部就是设置的这个属性,这个一般不会手动设置,但是也会用到,只是我们感觉不到,下面会详细解释,用于覆盖Handler的默认处理逻辑

. Handler我们平时经常接触,用它来发送信息和处理信息
(1)创建一个自定义的Handler继承Handler,并重写handlerMessage()方法
(2)直接使用默认的Handler类,但是在新建Handler对象时,传入一个CallBack对象


下面上图


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值