Handler

作者: 米花噗噗 | 来源:发表于2019-05-27 00:26 被阅读0次

    一.Handler是什么

    是android给我们提供用来更新Ui的机制,也是一套消息处理机制,可以用来发送消息和处理消息的

    二。主要作用:

    是线程间的通信,实现子线程与主线程之间的切换,通过Handler来异步更新UI,避免线程操作不安全的问题

    总体流程:Handler向MessageQueue发送一条Message,MessageQueue通过next方法把消息传给Looper,Looper收到消息后开始处理,然后最终交给Handler自己去处理。

    三。Handler原理

    Handler机制是由Lopper和Message来构建消息机制的

    MessageQueue: 存储消息对象的队列。负责存储消息对象,采用单链表数据结构来存储对象,按照先进先出原则执行,是由Message组成的一个队列

    Message:消息对象,包含了消息处理对象以及处理的数据

    Handler: 是Message的主要处理者,负责管理消息的发送和收到消息后的逻辑处理

    Lopper:消息循环,从消息队列中获取消息执行,一个MessageQueue需要一个Lopper。。MessageQueue来存储消息,Lopper是以无限循环的方式去查找是否有新消息,如果有就去处理,没有就等待,

    一个线程创建Handler时首先要创建Lopper的不然会保错RuntimeException: No Looper; Looper.prepare() wasn't called on this thread,

    而且每个线程下只需要创建一个Lopper,不然会保错RuntimeException: Only one Looper may be created per thread。

    UI线程是不需要创建的,应为ActivityThread创建时就初始化了Lopper,所以在UI 主线程就直接使用Handler

    在子线程创建Handler-------应为handler必须调用Lopper.prepare()方法

    相关文章

      网友评论

          本文标题:Handler

          本文链接:https://www.haomeiwen.com/subject/jqjwzqtx.html