Android Handler面试总结
Posted xiangzhihong8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Handler面试总结相关的知识,希望对你有一定的参考价值。
在android面试中,有关Handler的面试是一个离不开的话题,下面我们就有关Handler的面试进行一个总结。
1,Handler、Looper、MessageQueue、线程的关系
- 一个线程只会有一个Looper对象,所以线程和Looper是一一对应的。
- MessageQueue对象是在new Looper的时候创建的,所以Looper和MessageQueue是一一对应的。
- Handler的作用只是将消息加到MessageQueue中,并后续取出消息后,根据消息的target字段分发给当初的那个handler,所以Handler对于Looper是可以多对一的,也就是多个Hanlder对象都可以用同一个线程、同一个Looper、同一个MessageQueue。
综上,Looper、MessageQueue、线程是一一对应关系,而他们与Handler是可以一对多的。
2,主线程为什么不用初始化Looper
因为应用在启动的过程中就已经初始化了一个主线程Looper。每个java应用程序都是有一个main方法入口,Android是基于Java的程序也不例外,Android程序的入口在ActivityThread的main方法中,代码如下:
// 初始化主线程Looper
Looper.prepareMainLooper();
...
// 新建一个ActivityThread对象
ActivityThread thread = new ActivityThread();
thread.attach(false, startSeq);
// 获取ActivityThread的Handler,也是他的内部类H
以上是关于Android Handler面试总结的主要内容,如果未能解决你的问题,请参考以下文章