Android性能优化调研——UI布局优化:
UI布局优化:主要的思路是减少布局层级嵌套,在布局上多使用include,merge,viewstub这些标签。
include标签:如果一个项目中需要用到相同的布局设计,每个地方都需要把相同的布局再画一遍,这种情况可以把共同的布局写到一个xml中,在用的地方,使用<include/>标签。
Merge标签:减少视图层级结构
Viewstub:和<include>标签的作用类似,主要是为了提高布局的重用性,及布局的模块化。它们之间最大的差别是,ViewStub中的布局不会随着它所在布局的渲染而渲染,而<include>标签中的布局会随着它所在布局的渲染而渲染,ViewStub中的布局只有在你需要的时候才会渲染到主界面中。
使用GPU过渡绘制检测当前APP的UI设计是否合理,显示过渡绘制区域的步骤如下:“开发者选项”→点击“调试GPU 过渡绘制”→点击“显示过渡绘制区域”,一旦使能,对设备中的任何应用都有效。
过渡绘制:即当前像素点绘制的次数。这就像小时候我们画画,白纸就是没有绘制的画板,如果我们画了一个房子,涂上了红色,又在上面画了窗户,图上了棕色,窗户上又画了蓝色的玻璃,这重重复的叠加就是过度绘制,在白纸上的结果是,过度绘制的区域纸会被水笔浸的比较湿,在手机上就会出现显示较慢。
调试GPU过渡绘制(Visualize GPU Overdraw):过渡绘制用于检测你的程序是否存在不必要的绘制(举个栗子:同一个区域存在多个视图,刷新的时候被遮挡的视图也在绘制),导致显示时的性能问题,它可以帮助开发者解决如下问题:
(1)找出应用中哪些地方存在不必要的渲染;
(2)帮助开发者发现哪些地方可以减少渲染,提高程序运行效率;
Android通过不同颜色来区分同一个区域绘制的次数,颜色越深,表示过渡绘制的次数越多,过渡绘制越严重。
过渡绘制指的不是嵌套层级的越多就会检测出问题,即:将一个textView嵌入两个RelativeLayout,即三层嵌套,不描绘RelativeLayout背景色的话,是不会出现过渡绘制。它主要指的是当前这个像素单元格被描绘多次!
显示GPU过度绘制过度绘制后手机会出现不同颜色:
红色:代表4倍的绘制
粉色:代表3倍的绘制
绿色:代表2倍的绘制
绿色:代表1倍的绘制
关于Android性能优化文章请参照:http://mp.weixin.qq.com/s?__biz=MzIwNjQ1NzQxNA==&mid=2247483802&idx=1&sn=baaf65910acfa1aebe20a727daeb9877&scene=21#wechat_redirect
UI布局优化:主要的思路是减少布局层级嵌套,在布局上多使用include,merge,viewstub这些标签。
include标签:如果一个项目中需要用到相同的布局设计,每个地方都需要把相同的布局再画一遍,这种情况可以把共同的布局写到一个xml中,在用的地方,使用<include/>标签。
Merge标签:减少视图层级结构
Viewstub:和<include>标签的作用类似,主要是为了提高布局的重用性,及布局的模块化。它们之间最大的差别是,ViewStub中的布局不会随着它所在布局的渲染而渲染,而<include>标签中的布局会随着它所在布局的渲染而渲染,ViewStub中的布局只有在你需要的时候才会渲染到主界面中。
使用GPU过渡绘制检测当前APP的UI设计是否合理,显示过渡绘制区域的步骤如下:“开发者选项”→点击“调试GPU 过渡绘制”→点击“显示过渡绘制区域”,一旦使能,对设备中的任何应用都有效。
过渡绘制:即当前像素点绘制的次数。这就像小时候我们画画,白纸就是没有绘制的画板,如果我们画了一个房子,涂上了红色,又在上面画了窗户,图上了棕色,窗户上又画了蓝色的玻璃,这重重复的叠加就是过度绘制,在白纸上的结果是,过度绘制的区域纸会被水笔浸的比较湿,在手机上就会出现显示较慢。
调试GPU过渡绘制(Visualize GPU Overdraw):过渡绘制用于检测你的程序是否存在不必要的绘制(举个栗子:同一个区域存在多个视图,刷新的时候被遮挡的视图也在绘制),导致显示时的性能问题,它可以帮助开发者解决如下问题:
(1)找出应用中哪些地方存在不必要的渲染;
(2)帮助开发者发现哪些地方可以减少渲染,提高程序运行效率;
Android通过不同颜色来区分同一个区域绘制的次数,颜色越深,表示过渡绘制的次数越多,过渡绘制越严重。
过渡绘制指的不是嵌套层级的越多就会检测出问题,即:将一个textView嵌入两个RelativeLayout,即三层嵌套,不描绘RelativeLayout背景色的话,是不会出现过渡绘制。它主要指的是当前这个像素单元格被描绘多次!
显示GPU过度绘制过度绘制后手机会出现不同颜色:
红色:代表4倍的绘制
粉色:代表3倍的绘制
绿色:代表2倍的绘制
绿色:代表1倍的绘制