MessageQueue(消息队列)类:
存放消息和事件,一个线程只能有一个与之对应的Lopper。
通过Message.obtain()或者Handler.obtainMessage()获取Message对象。但是这并不一定是直接创建一个新的实例,而是先从消息池里看看有没有可用的Message实例,存在则直接取出返回这个实例。如果消息池里没有可用的Message实例,则才用给定的参数创建一个Message对象。
Looper类:
用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理,用来为一个线程开启一个消息循环。
默认情况下android中新诞生的线程是没有开启消息循环的(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环)。
Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。
Looper从MessageQueue取出Message后,交由Handle的handleMessage()进行处理.处理完成后,调用Message.recycle()将其放入消息池中。
Handler类:
消息的处理者,handle负责将需要传递的消息封装成Message对象,然后调用sendMessage()方法将消息放入MessageQueue中.当MessageQueue循环到该Message,调用相应的Handle对象的handleMessage()方法将其处理。Handle可以共享同一个Looper和MessageQueue。