本文共 448 字,大约阅读时间需要 1 分钟。
init
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210305142835321.png)
init根据init.rc 启动zygote和servicemanager。
ASM && AMP
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210305142907535.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70)
context
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210108145325190.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70)
Handler
activityThread创建Looper过程
![图-2](https://img-blog.csdnimg.cn/20210108145750346.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70)
Looper 读取消息队列过程
![图-3](https://img-blog.csdnimg.cn/20210108145838958.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70)
handler 创建过程
![图-4](https://img-blog.csdnimg.cn/20210108145951895.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70)
handler重构过程
如图,使用过程中我们都会重构handleMessage方法,Handler类会利用该方法进行队列填充。
![图-5](https://img-blog.csdnimg.cn/2021010815001473.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70)
构造的handlemessage最终通过 looper msg.target.dispatchMessage调用。
Handler使用过程
- ActivityThread启动looper
- Looper 创建MessageQueue实例
- 使用时,创建Handler 并重构handlemessage(), 填充消息信息。
- Looper会查询队列调用handlemessage处理消息信息。
- 如果要在子线程中使用Handler 就需要新建Looper,传给Handler即可。
Activity && Application
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210305145626251.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JtZTMxNA==,size_16,color_FFFFFF,t_70#pic_center)
转载地址:http://yijvb.baihongyu.com/