美文网首页
Activity、Window、View关系

Activity、Window、View关系

作者: 挖打发 | 来源:发表于2021-05-24 23:16 被阅读0次

1 setContentView原理是什么

2 Activity在onResume之后才会显示的原因是什么

3 ViewRoot是干嘛的,是view tree的root吗

window就是指phoneWindow,setContentView作用是创建一个DecorView,初始化整个页面的布局,此时建立好了viewTree,但页面并没有显示出来,页面的显示是在调用onResume之后,onResume之后调用了handleResumeActivity,首先拿到Activity里面phoneWindow的DecorView,然后把这个DecorView加到windowManager里面,然后调用makeVisible让它变可见

总结:

1 activity在启动的时候会创建一个phoneWindow,phoneWindow里面有一个DecorView,这个DecorView就是整个activity的viewTree的rootView了,contentView是decorView里面的一部分

2 DecorView对应一个ViewRootImpl对象,这个viewRootImpl是可以和WMS发起双向通信的,通过IWindowSession向WMS发起binder调用,WMS也通过IWindow向ViewRootImpl发起binder调用,

3 viewRootImpl会在WMS中注册一个窗口,WMS会统一管理所有的窗口的大小、位置和层级,在第一次注册时,viewRootImp还会向WMS申请一个serface,有了serface,应用端就可以绘制了,绘制完了之后,serfaceTrigner还会在WMS中根据提供的窗口层级大小位置来对serface进行合成,合成之后就可以在屏幕的缓冲区显示

相关文章

网友评论

      本文标题:Activity、Window、View关系

      本文链接:https://www.haomeiwen.com/subject/vajfsltx.html