handler机制主要是处理线程间的通信,线程分为主线程,子线程 ,在主线程中只能处理用户的点击事件,触屏事件,子线程是处理网络下载,数据库操作等的耗时操作的,为什么要放在子线程中呢,如果放在主线程中,会发生ANR异常,为什么会产生anr异常
进而引入了handler机制,子线程是不能更新UI的,总共涉及到五个类
Message:
MessageQueue:
Handler:
Looper:
thread:
Looper
Looper的作用有两点,第一是为调用该类中静态函数prepare()的线程创建一个消息队列;第二是提
private static void prepare(boolean quitAllowed) {
if (sThreadLocal.get() != null) {
throw new RuntimeException("Only one Looper may be created per thread");
}
sThreadLocal.set(new Looper(quitAllowed));
}
供静态函数loop(),使调用该函数的线程进行无限循环,并从消息队列中读取消息.
public static void loop() {
final Looper me = myLooper();
if (me == null) {
throw new RuntimeException("No Looper; Looper.prepare() wasn't called