Android高级UI进阶系列之UI绘制原理

93 阅读1分钟

1.Activity是怎么出来的? 2.onCreate()是怎么调用到的? 3.setContentView()是怎么加载xml的布局文件的?

launcher进程收集当前App上下文信息->找system_server->AMS-zygote->fork->main

1.开始通过binder机制对AMS服务进行调用, 同时打包ApplicationThread的数据发送过去; 2.AMS帮我们调用scheduleLaunchActivity实际上是进行我们的Handler信息通信; 3.实际上在主线程内部启动了一个Handler机制对于我们的状态调用进行支撑; 4.AMS调用的schedule方法都是在对应发送一个handler消息; 5.对应不同的状态执行不同的业务处理; 6.performLaunchActivity用于对Activity进行创建,创建的过程是通过反射进行的;

Looper.loop()死循环 原因是在Android内部 主线程的所有操作都是通过 Handler通信机制完成的

ActivityThread--main

完成生命周期的调用

activity->ActivityThread->attach_

源码断档 --binder跨进程调用完成

scheduleLaunchActivity-> ActivityClientRecord(activity的信息包)

-->Handler发送消息->handleLaunchActivity-> performLaunchActivity