以下是一些比较有名的公司开发,用户量极大的app过度渲染的截图:
淘宝
网易Lofter
携程
支付宝
再看有优化的是什么样子:
红色是表示过度渲染,蓝色和绿色表示还好。
再看看张鸿洋博客里谈这个问题
我自己的开发经验是,一般加载内容不多的activity页面,这种过度绘制导致的性能和卡顿问题并不明显,或许这也是android开发者不太注重这个问题的原因之一。电商页面加载信息量庞大,应该会有影响吧。
自从知道这个开发者选项里这个性能测试之后,每次都会借助它优化自己的布局层级,android studio里使用代码分析工具时也会报这个层级太深的问题,比如:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:layout_weight="1" >
<ImageView
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:contentDescription="@null"
android:src="@drawable/tuzhong" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="5dp"
android:gravity="center"
android:text="@string/bus_on_way"
android:textColor="@color/textColor_Blue"
android:textSize="@dimen/textSize_15" />
</LinearLayout>
这样一个布局,就是一个图片下面放文字
上面的写法就很啰说,一个textview就可以搞定。一层套一层就很没必要。
最后再看看android的生态(自启严重),最近刚好买了个华为荣耀v8手机,想着搞android开发还是得多体验android系统吧,就暂时放下了苹果手机,2000出头顶配的华为荣耀v8卡顿时有发生,经理的三星note7,5000多,一问也是用着用着就卡。这个也是android系统运行在虚拟机机制上的老毛病了,垃圾回收不够好。