Handler的原理

1:形象描述一下Handler的原理。
Handler:快递员(属于某个快递公司的职员)
Message:包裹(可以放置很多东西的箱子)
MessageQueue:快递分拣中心(分拣快递的传送带)
Looper:快递公司(具有处理包裹去向的管理中心)

2:Looper 不断的从 MessageQueue 中取出 Message 交给 Handler 来处理.

每个 Thread 对应一个 Looper, 每一个 Looper 只对应一个 MessageQueue,
每一个 MessageQueue 中有N个 Message, 每个 Message 只能定义一个 Handler 来处理。

3: Handler 有两个职责: 处理 Message和 把 Message 放入 MessageQueue 消息队列中去。
将一个 Message 放入消息队列有两种方法 post和send方法,
post(Runnable r) 和 sendMessageAtTime(Message msg, long time)区别
Looper 职责是从 MessageQueue 取出 Message 调用 Handler.dispatchMessage进行消息派发, 派发给 Handler.
MessageQueue 是一个消息队列, 是队列就会有新建队列, 元素入队,元素出队,函数元素等,
enqueMessage入队, next出队, removeMessages删除元素.

重点看一下 Looper, Looper 为什么能不停的循环取 Message 呢?
Loop.java
public static void loop() {
final Looper me = myLooper();
final MessageQueue queue = me.mQueue;
for (;;) {
Message msg = queue.next(); 
}
}
loop()为什么不会导致系统死机, 因为Looper在 Ui 主线程中运行, Ui主线程需要一直运行下去必须循环。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值