关于Handler消息传递机制的认识

1.Handler是用来更新UI界面和处理主线程和子线程之间的通信的

2.为什么android系统要采用只能通过handler机制更新UI呢?
    这种设计的根本原因是来解决多线程并发更新UI而导致界面更新混乱的问题的,
而如果每个子线程想要更新UI而加锁的话,就会使程序运行的性能变低,所以采用handler机制

3.handler的原理
    handler负责发送消息,Looper负责接收Handler发送的消息,并将消息回传给handler自己
MessageQueue就是负责存储handler发送的消息的一个容器
    通俗的讲:
    1.handler就是消息处理器,负责处理消息的
    2.Message消息,包含消息Id,被处理的对象
    3.MessageQueue消息队列,用来存放Handler发送过来的消息
    4.Looper消息泵,不断的从消息队列中抽取消息
    MessageQueue就像一个水塘里面存储着消息,而Message就是水塘里的水,Looper就像是水泵
    不断的从水塘里抽取水,而handler就像操作的工人

4.(1)子线程中创建handler对象之前要调用Lopper.prepare()方法,而且要调用
           Looper.loop()方法来启动消息的轮询,然后才会接收到子线程发送的消息.
   (2)而在UI线程中创建handler对象则不需要去创建looper对象,因为主线程已经创建好了
         在主线程中创建的handler对象重写的hanleMessage()方法中不能执行耗时性操作,因为它是
         运行在主线程中的

5.android更新UI的四种方式
    (1).handler.sendMessage();
    (2).handler.post();
    (3).runOnUiThread();
    (4).view.post();

6.在子线程中某些情况下其实是可以更新UI的,但是出于线程安全方面的考虑,一律在主线程中
    更新UI

7.使用handler过程中的两种异常
    (1).在子线程中不能更新UI的异常
    (2).在子线程中创建handler对象而没有调用 Lopper.prepare()方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值