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面试总结的主要内容,如果未能解决你的问题,请参考以下文章

Android的Handler的常见面试问题总结

Android面试:Handler八大问题汇总

Android面试 Handler机制

Android Handler和他的小伙伴们,消息机制详解

Android 面试收集录5 消息机制

Android大牛近期大厂面试详解(附解答)