Android经典问题-Handler消息机制(源码解析)
Handler消息机制基本上已成为Android面试环节的必出题,本人也是在多次被问到之后觉得有必要对这个问题进行梳理一遍,面试的时候拿出来看看,可以省下不少时间呢。
本文将从源码角度进行分析,主要涉及到五个类:Handler,Message,MessageQuene,Looper,ThreadLocal;
流程图
整个循环逻辑很绕,涉及到多个类,如果第一次看肯定是会被绕晕的,这里我借用了别人的一张流程图;
看了流程图有个大概的了解;
Message
//获取消息实体源码
/**
message类是消息实体类,内部重载了多个obtain()方法,内部通过msgPool中取出缓存消复用,没有则new Message象
,msgPool 并不是一个容器,它也是一个消息,可以看成一个临时变量来缓存一条消息,处理完的消息有可能缓存,也有可
能被recycle掉;
在其他的重载方法中调用此obtain方法获取msg对象,并给 target