Looper:中文意思是作线环的装置,在这里很明显就是循环的装置咯,其实就是一个永动机,不停的从MessageQueue消息队列中取出Message消息,然后传递给Handler,Handler再回调HandleMessage方法去处理,每个线程中只有一个Looper对象。
MessageQueue:从字面意思就可以理解这是一个消息队列。一个线程可以有多个Handler对象,然后多个Handler将消息发送出去,这些消息都保存在一个MessageQueue中,为什么只有一个MessageQueue呢,因为一个线程里只有一个Looper。
Message:消息主体,一个Message对象可以包含很多你想发送的东西。
结合上面的可以得出一个线程只有一个Looper对象,一个Looper对象只有一个MessageQuere对象,一个MessageQueue可以存放很多Message对象。工作流程就是Handler将Message发送到MessageQueu中,然后Looper不断轮询,将消息从队列中取出,又交给Handler处理。
关键代码:
public static void main(String[] args) {
Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");
}