优化方向:
一、RelativeLayout和带有weight的LinearLayout尽量不要放在根布局,防止出现子view进行过多measure
原因:
1、RelativeLayout及其子view会进行2次measure,1次layout;
2、其子view中未使用weight的LinearLayout会进行1次measure,1次layout;
3、LinearLayout中子view有使用weight的,会导致该LinearLayout及其所有子view进行两次measure;
4、嵌套使用时,会导致measure方法调用数据成倍增加。
二、使用<merge>标签或者使用RelativeLayout,使view层级尽量减少,防止在measure和layout中会导致过多和过深的递归,
原因:
递归会导致在空间和时间上都造成大量的性能问题,这是由于递归会进行数据的出入栈和保存读取,这个会浪费大量的时间和 空间。
三、将不常使用的view初始设置为Gone(是不可行的,原因如下)、或者使用<viewStub>尽量减少布局中的view个数
原因:
1、visibility初始值设置为Gone时,不会进行measure和layout,但是会创建View,一样会进行耗时操作;
2、<viewStub>进行measure和layout的耗时小于(甚至远小于)其他view的耗时。
网友评论