组件的生命周期,意义在于节约内存和cpu消耗,防止在一帧内重复的对UI进行属性的修改,导致在屏幕上的不断渲染而导致资源的浪费。
由此进行考虑,在一帧内只进行记录,哪些属性需要修改,需要针对于哪方面的界面或者尺寸进行更新。所以在属性发生更改的时候
首先是标记失效,利用invalidate进行标记失效,实质这里调用layoutManger的invalidate方法,将涉及到的先置于队列中,然后延迟一帧,
然后调用layoutManger.validate的方法,实质这里是遍历队列中的UI,然后分别调用它们的validate的方法,然后再去依照顺序进行
commit的属性提交,measure的尺寸计算,update的界面布局更新,如此种种。
这里依次进行更新,然后在更新的过程中按照顺序,在更改属性的时候,依照由外到内的方向,一次对UI进行属性更改。
在measure的尺寸测量过程中,依照由内向外的方向,一次对UI进行度量操作。如果不显式设置它的匡高,它就会在这时调用measure()
方法给自己测量一个最佳尺寸出来。反之,如果设置了固定尺寸,就安札你显式设置的尺寸,若同时被设置了width和height,measure()方法
将不会被调用。而所谓的最佳尺寸,不同的组件都有自己的测量方式,容器是以能刚好放下所有子项为最佳尺寸,文本是以能完整显示文本内容
为最佳尺寸。所以需要依照由内到外的方式进行测量操作。在度量的过程中,在measure中如果是容器是组件的话,会layout的measure的方法,
依照是普通布局,水平布局,垂直布局,亦或是网格布局,然后计算在此等布局下,在子项满足各自的坐标位置,宽高属性,由此计算到本身
的宽高属性。