前天面试的时候被问到了,所以按照自己的思路阐述一下她们的关系:
looper 使一个普通线程变成looper线程也就是循环工作的线程,变成looper线程后,就会在looper线程中生成并维护一个消息队列也就是messagequeue,通过loop()方法不断从消息队列中取出消息也就是message,这个时候会有个很重要的方法,就是这个方法把handler联系到了一起,这个方法就是massage.target.dispatchmessage(),如何联系起来的呢,下面看一下handler的实现,handler的默认构造函数中会得到当前线程的looper对象,消息队列也就是当前线程looper的消息队列,当handler sendmessage的时候会调用msg.target = this(handler对象),就这样looper messagequeue message handler就联系到了一起。