Handler运行机制详解

1、android线程间的通讯,都是经过Handler在线程之间的切换。包括耗时任务的结果传送到UI线程等。

2、Handler使用包括2种形式,一种是主线程和子线程的交互,另外一种是子线程和子线程之间的交互。

3、Handler的创建,主线传入Looper.getMainLooper;如果是在子线程中创建,则需要在Looper.prepare(); 和 Loop.loop之间创建,否则会抛出异常。

4、Handler 的消息机制分为5个部分,Handler、message、Message Queue、Looper、ThreadLocal,以下将对此5部分分别进行详解。

  • Message,Message 是线程之间传递的消息,通过handler的sendMessage发送。message包含4个常用字段,what、arg1、arg2、obj。obj携带对象,其他的携带整形数据。

  • Message Queue:消息队列即是存储Handler发送的message存储的地方,message是通过一个单链表的结构来维护消息列表的,先进先出。每个线程只有一个Message Queue。Handler中的MessageQueue实际是Looper中定义的MessageQueue。

  • Looper:Looper的loop是一个无线循环,message queue中消息都是经过Looper无线循环中取出来的,直到消息队列为空;如果进来新的消息,因为Looper是个无线循环,可以马上取进来的message。

  • ThreadLocal:Looper中定义了TheadLocal,每个线程保持了一个Looper副本,因此Looper对线程是唯一的。ThreadLocal是创建线程局

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值