1. Handler在创建实例时,会关联一个Looper对象,这个Looper对象是它对应线程的变量拷贝 - ThreadLocal变量的一员,当它sendMessage()的时候,会将Message.taget设置自身Handler对象并加入到Looper的MessageQueue中,等待消息循环。
2. Looper管理了一个MessageQueue,线程的run()方法中会调用Looper.loop(),一直循环地从MessageQueue中取出Message,从而使得线程成为Looper线程,每次取出Message后都会调用Message.taget.dispathMessage(msg)而间接地调用Handler.handlMessage()方法。
3. Message通过设置的Bundle对象,然后由在一个线程中的Handler实例sendMessage()将Message加入到Looper对应的线程中的MessageQueue进行事件循环,从而实现了数据的线程间通信。