Handler

2019-05-27  本文已影响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()方法

上一篇下一篇

猜你喜欢

热点阅读