196. 简述Android Window的更新过程 ? |
说到Window的更新过程,个人认为其实也就是Window里面View的更新过程了,和创建/删除过程一样,最后照样也是到了WindowManagerGlobal里 面执行具体的操作了,具体来讲的话就是执行updateViewLayout方法了, 这个方法里面做了以下几件事: (1):首先获取到最新的View的 LayoutParams属性,然后将其设置到我们当前需要更新的View上面; (2):接着通过数组遍历的方式找到当前View对应的索引值,同时将该 索引值对应的LayoutParams从mParams里面删除,并且找到该索引值对应的ViewRootImpl对象; (3):调用 ViewRootImpl的setLayoutParams方法进行具体的更新操作,其实更新操作就是重绘Window里面的View罢了,同样也是通过 创建ViewRootImpl的Session对象进行的,而Session对象里面的执行过程实际上是通过WindowManagerService的relayoutWindow实现的; |
197. 简述Activity、Window、DecorView、ViewRootImpl之间的区别与联系 ? |
(1):在我们通过startActivity之后,经过层层方法调用链,最 |