Android性能优化(一)--总结

1 性能优化概述

优化目的 性能指标 优化方向
更快 流畅性 * 1.启动速度 * 2.页面显示速度 * 3.响应速度
更稳定 稳定性 * 1.避免出现应用崩溃(Crash) * 2.避免出现应用无响应(ANR)
更省 资源节省性 * 1.内存大小 * 2.安装包大小 * 3.耗电量 * 4.网络流量
2 性能指标:流畅性
优化方向 优化原因 优化方案
启动速度 初次打开应用时,需加载很多资源 or 功能逻辑 采用异步加载(多线程)、分步加载、延期加载的策略
页面的显示速度 a.页面需绘制的内容(布局&控件)太多,从而导致页面测量的时间过长 b.绘制效率过低,导致绘制时间过长 * 布局优化 1.选择耗费性能少的布局 2.减少布局的层级(嵌套):使用merge标签、合理选择布局类型 3.提高布局的复用性:使用include标签 4.减少测量&绘制时间:使用布局标签ViewStub标签、减少布局属性wrap_content 绘制优化 1.降低view.OnDraw()的复杂度 2.避免过度绘制(Overdraw)
响应速度 应用程序出现ANR情况,从而导致应用程序响应速度慢 使用多线程,将大量&耗时操作放在工作线程中进行
其余优化方案 1.合理的刷新机制 2.正确使用动画 a.根据不同的场景选择合适的动画框架 b.使用硬件加速的方式提高流畅度 c.使用动画后需要停止动画
3 性能指标:稳定性
优化方向 优化原因 优化方案
ANR 应用程序出现ANR情况,从而导致应用程序响应速度慢 使用多线程,将大量&耗时操作放在工作线程中进行
Crash 应用崩溃Crash很多情况是因为内存溢出OOM 1.避免内存泄漏 2.避免内存抖动:避免频繁创建大量、临时的、小的局部对象 3.图片Bitmap相关:释放资源、适配屏幕、解码方式、图片缓存 4.提高代码质量 & 减少代码数量 5.日常不正确的使用:ListView的缓存复用、尽量减少缓存复用、尽量少用多进程、依赖注入框架等
4 性能指标:资源节省性
优化方向 优化原因 优化方案
内存优化 避免因不正确使用内存 & 缺乏管理,从而出现内存泄漏、内存溢出、内存空间占用过大等问题,最终导致应用程序崩溃(Crash) 1.避免内存泄漏 2.避免内存抖动:避免频繁创建大量、临时的、小的局部对象 3.图片Bitmap相关:释放资源、适配屏幕、解码方式、图片缓存 4.提高代码质量 & 减少代码数量 5.日常不正确的使用:ListView的缓存复用、尽量减少缓存复用、尽量少用多进程、依赖注入框架等
减少安装包大小 应用程序的安装包大小虽对应赢程序的使用无影响,但影响的是:空间占有率:即 应用程序战友手机内存的大小 下载门槛:应用的安装包越大,用户下载的门槛越高 1.资源优化 2.减少引入的不必要的功能库 3.代码混淆 4.插件化
减少网路流量 每次获取资源时都通过流量 &网络加载的方式,将消耗大量网络流量 1.主要通过缓存减少网络流量 2.采用三级缓存方案
减少耗电量 1.正确使用 WakeLock机制 2.尽量使用JobScheduler 3.*使用电量分析工具:BatteryHistorian
5 其他 【Android性能优化(一)--总结】数据结构的选择
参考 https://www.jianshu.com/p/516effe7649d

    推荐阅读