2018/5/22
工具
GPU rendering学会看柱状图
过度绘制
Looper、Choreographer(https://blog.csdn.net/qq_36523667/article/details/80034367)
嵌套
为什么嵌套性能低呢?LayoutInlater是通过xml paser+反射进行的一个创建,消耗挺大的。而且类如RelativeLayout、LinearLayout等经常需要measure两次才能完成,而嵌套、相互嵌套、深层嵌套等的发生会使measure次数呈指数级增长
1层最好。好像有人开发了自定义控件,就是可以直接就是一个View。减少嵌套需要丰富的智慧与经验。
过度绘制
也是见仁见智。不过有些真的是很难避免的
注重复用
这谈不上渲染优化了,但是对于需求改动有着很积极的响应。一般是通过include+自定义控件进行封装。
TextView,Drawable
写一个TextView Drawable同时存在的控件。这是通过自定义控件减少嵌套的方式。这里需要积累和思路。
RelativeLayout、ConstraintLayout
很容易就可以1层,但是你也必须考虑机型适配友好的百分比布局和LinearLayout布局。减少嵌套和机型适配是我们需要好好平衡的点。
include+merge
消除外层。多用于UI架构,避免单个xml布局中太过复杂。
view stub
绘制3大流程
不可有耗时操作及新建对象
第三方UI控件库
慎用,除了RecyclerView这种。最好还是自己写一个吧。
SurfaceView和TextureView
这种绘制是在子线程的。多用于绘制更优性能的动画。
RenderScript
open gl