目录
- 消息机制 Handler
- 面试问题
 
消息机制 Handler
对handler机制的基本作用、用法、时序流程进行介绍,针对handler机制中的内存泄漏问题讲解:一篇读懂Android Handler机制
 Android-Handler机制详解
 全面解析 | Android之Handler机制
需要掌握的:
- handler机制的核心目的,基本类,基本用法,基本时序流程?
- handler机制中容易出的内存泄漏问题是什么?怎么解决?
- messageQueue的真实数据结构是什么?不同的send一条数据的方法对应的数据结构操作的区别是啥?
面试问题
Handler的实现原理?
 子线程中能不能直接new一个Handler,为什么主线程可以?
 主线程的Looper第一次调用loop方法,什么时候,哪个类?
 Handler导致的内存泄露原因及其解决方案?
 一个线程可以有几个Handler,几个Looper,几个MessageQueue对象?
 Message对象创建的方式有哪些 & 区别?
 Message.obtain()怎么维护消息池的?
 Handler 有哪些发送消息的方法?
 Handler的post与sendMessage的区别和应用场景?
 handler postDealy后消息队列有什么变化,假设先 postDelay 10s, 再postDelay 1s, 怎么处理这2条消息?
 MessageQueue是什么数据结构?
 Handler怎么做到的一个线程对应一个Looper,如何保证只有一个MessageQueue? ThreadLocal在Handler机制中的作用?
 HandlerThread是什么 & 好处 &原理 & 使用场景?
 IdleHandler及其使用场景?
 消息屏障,同步屏障机制?
 子线程能不能更新UI?为什么Android系统不建议子线程访问UI?
 Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
 MessageQueue# next 在没有消息的时候会阻塞,如何恢复?
 Handler消息机制中,一个looper是如何区分多个Handler的?
 当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理?
 处理message的时候怎么知道是去哪个callback处理的?
 Looper.quit/quitSafely的区别?
 通过Handler如何实现线程的切换?
 Handler 如何与 Looper 关联的?
 Looper 如何与 Thread 关联的?
 Looper.loop()源码?
 MessageQueue的enqueueMessage()方法如何进行线程同步的?
 MessageQueue的next()方法内部原理?
 子线程中是否可以用MainLooper去创建Handler,Looper和Handler是否一定处于一个线程?
 ANR和Handler的联系?