1.什么是Handler?
Handler就是将消息放入队列的机制。我们在哪个线程中创新handler,handler就将消息放入所在的线程,除非在创建handler对象时是指定具体的线程。通常handler在主线程创建,handler可将消息放入主线程队列中。
当应用程序启动时,会初始化一个UI线程。UI线程中创建了Looper,所以是一个循环工作线程。创建Looper时,Looper会创建一个MessageQueue。UI线程中的Looper会不断从MessageQueue中取出消息。
2.什么是Looper和MessageQueue?
Looper:相当于消息的载体
它的内部有一个消息队列,也就是MessageQueue,Handler发送的所有消息都会走向这个消息队里。
它的Looper.loop方法是一个死循环,不断的从消息队列MessageQueue中取出消息。如果有消息存在就处理该消息,否则就阻塞。
MessageQue:就是一个消息队列,可以向其中添加消息并处理消息。
3.什么是Message?
Message :android.os.Message是定义一个Messge包含必要的描述和属性数据,并且此对象可以被发送给android.os.Handler处理。属性字段:arg1、arg2、what、obj、replyTo等;其中arg1和arg2是用来存放整型数据的;what是用来保存消息标示的;obj是Object类型的任意对象;replyTo是消息管理器,会关联到一个handler,handler就是处理其中的消息。通常对Message对象不是直接new出来的,只要调用handler中的obtainMessage方法来直接获得Message对象。<