首先要理解handler机制,我们必须要熟悉这么几个概念:
Handler:从Thread中的Looper对象管理的MessageQuene数据结构中不断的提取消息,进行处理
Message:他是消息载体,就是子线程发往主线程的消息数据
MessageQuene:他是一种数据结构,采用队列的数据结构,先进先出,子线程在调用sendMessage()之后会,Looper会把这个消息放在自己管理的MessageQuene中,等待
Handler进行处理。
Looper:每一个线程都可以有一个Looper对象,用来管理MessageQuene队列
Thread: 你懂得
大家都知道,android 是不允许程序员在子线程中直接更新UI的,这是google工程师出于线程安全的考虑。那怎么动态的更新UI呢?
今天我们就来研究google工程师为你精心打造的handler机制:
由于android 的主线程在5s之后还没有响应的话会报ANR警告,所以在主线程(UI线程)中做一些耗时的操作是不行的,必须转在子线程中进行耗时的工作,然后将结果通知给主线程,更新UI显示给用户看。那么子线程如何将结果告知主线程呢?没什么说的:业界标准---handler