APP基本性能优化
Posted 山水相逢-z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP基本性能优化相关的知识,希望对你有一定的参考价值。
布局优化
- 避免OverDraw过渡绘制
- 优化布局层级
- 避免嵌套过多无用布局
- 当我们在画布局的时候,如果能实现相同的功能,优先考虑相对布局,然后在考虑别的布局,不要用绝对布局。
- 使用标签把复杂的界面需要抽取出来
- 使用标签,因为它在优化UI结构时起到很重要的作用。目的是通过删减多余或者额外的层级,从而优化整个android
Layout的结构。核心功能就是减少冗余的层次从而达到优化UI的目的! ViewStub
是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。
代码优化
- 使用AndroidLint分析结果进行相应优化
- 不使用枚举及IOC框架,反射性能低
- 常量加static
- 静态方法
- 减少不必要的对象、成员变量
- 尽量使用线程池
- 适当使用软引用和弱引用
- 尽量使用静态内部类,避免潜在的内存泄露
- 图片缓存,采用内存缓存LRUCache和硬盘缓存DiskLRUCache
- Bitmap优化,采用适当分辨率大小并及时回收
LISTVIEW和GRIDVIEW优化(老项目可能会用)
- 采用ViewHolder复用convertView
- 避免在getView中执行耗时操作
- 列表在滑动状态时不加载图片
- 开启硬件加速
移动端获取网络数据优化
- 连接复用 :节省连接建立时间,如开启 keep-alive。
对于 Android 来说默认情况下 HttpURLConnection 和 HttpClient 都开启了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影响连接池的 Bug,具体可见:Android HttpURLConnection 及 HttpClient 选择
- 请求合并:即将多个请求合并为一个进行请求,比较常见的就是网页中的 CSS Image
Sprites。如果某个页面内请求过多,也可以考虑做一定的请求合并。 - 减少请求数据的大小:对于post请求,body可以做gzip压缩的,header也可以作数据压缩(不过只支持http 2.0)。
- 返回的数据的body也可以作gzip压缩,body数据体积可以缩小到原来的30%左右。(也可以考虑压缩返回的json数据的key数据的体积,尤其是针对返回数据格式变化不大的情况,支付宝聊天返回的数据用到了)
- 根据用户的当前的网络质量来判断下载什么质量的图片(电商用的比较多)。
其他优化
- 使用Application Context代替Activity Context
- 谨慎使用static 关键字
static使用不当容易造成内存泄漏
- 数据库优化
- 电量优化
- 多线程并发引发的性能等
相关工具
- 使用Hierarchy Viewer查看UI布局层级
- 使用AndroidStudio Memory Monitor查看内存使用情况
- 使用TraceView优化App性能
- 使用内存泄露分析工具MAT分析APP内存状态
- 检测内存泄露的开源库:LeakCanary
以上是关于APP基本性能优化的主要内容,如果未能解决你的问题,请参考以下文章
移动端手机 App 耗电量测试:Monkey 电量测试基本操作及 Android 性能优化