setContentView是UI绘制的起点?然而它并不是,因为setContentView知识UI绘制体系里面的很小的一个部分,这个很小的一部分只会做一件事情。在整个UI体系,它存在Activity,存在Window,存在DecorView,而我们setContentView只不过是为DecorView上面这一块专门给用户来显示的这一个区间,来进行UI解析,xml的解析。而上面这些事情才正是WMS一开始为我们提供的各种各样的保障,为UI的准时运行提供了保障,那么这个保障里面有个非常重要的节点,这又一个重要的函数,preformLaunchActivity,这个就是启动一个Activity的,那么启动一个Activity,那这个部分属于AMS这块但是在AMS又包含着WMS,这里面用类加载的方式反射new了一个Activity,那么这个时候,在这个里面就会对activity注册信息的一个检测,之后有一个重要的函数,activity.attach(),里面这个时候创建了一个PhoneWindow,创建了PhoneWindow之后,这时window跟activity绑定了,window又了,window的管理者这时候也创建了,WindowManagerService,之后把这个管理类赋值给了windowManage类,这是一个最上层的一个UI。那么有了这个attach之后,attach走完之后,紧接着就走Intrumentation的callActivityOnCreate,意味着会调用activity的onCreate函数,然后就会setContentView,就会解析xml。
网友评论