Android UI优化小结

来源:互联网 发布:easybcd引导linux失败 编辑:程序博客网 时间:2024/04/30 02:25

前言

Android系统的极致UI性能是60帧每秒,所以每帧处理的时间不能超过16ms。这是Android官方给出的流畅运行定义。

我们来看一下,一帧需要处理多少数据。

我手头有个1920x1080pad60帧的情况下,一秒的像素量就是1920x1080x60
设置个1920x1080的背景,

转换成内存

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 ---->1920x1080x60x16/8 = 237.3M

Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位 ---->1920x1080x60x32/8 = 474.6M

Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位 ---->1920x1080x60x16/8 = 237.3M

Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。 ---->1920x1080x60x4/8 = 59.3M

看着都觉得多

 

简单分析

UI卡顿的原因主要是以下几类
1.UI线程有耗时或轻微耗时操作

2.Layout过于复杂

3.View过度绘制---单位时间内,动画执行次数太多,加重CPU GPU负担

4.View频繁measure layout,增加渲染次数

5.内存GC,阻塞渲染

6.冗余资源,渣渣逻辑-----加载执行慢

7.ANR


分析工具

针对124可以用hierarchyviewer.batlint过冗余
SDK目录下..\adt-bundle-windows-x86_64-20140702\sdk\tools\hierarchyviewer.bat

针对3,可以用DDMS查看Heap或者adb shell dumpsys cpuinfo 或者adb shell top -m 1

针对5,可以用内存监控,leakCanary blockCanary或者DDMS里头的Allocation Tracker。主要是找一下内存抖动。工具是挺多的,还有腾讯的WeTest。


0 0