Android 性能优化--01:性能优化指南

本文转载自:Android性能优化:性能优化指南

目录

性能优化1-1.png

1.性能优化的目的

  性能优化的目的是为了让应用程序App更快、更稳定、更省。具体介绍如下:

  • 更快:应用程序运行得更加流畅、不卡顿,能快速响应用户操作;

  • 更稳定:应用程序能稳定运行、解决用户需求,在用户使用过程中不出现应用程序崩溃(Crash)和无响应(ANR)的问题;

  • 更省:节省耗费的资源,包括内存占有、电池量、网络资源等。

2.需优化的性能指标

  针对上述目的,需优化的性能指标含:流畅性、稳定性、资源节省性。

3.优化方向

  针对上述性能指标,本文主要讲解的优化方向如下:

性能优化1-2.png

下面将针对每一种性能指标,详细讲解其优化方案。

4. 流畅性

(1)优化原因:利于减少使用中的卡顿、响应时间久等问题,给与用户一个操作流畅的体验。

(2)优化方向:主要针对3个方面优化:启动速度、页面显示速度、响应速度。

4.1 启动速度

(1)优化原因:初次打开应用时,需加载很多资源和功能逻辑。

(2)优化方案:采用异步加载(多线程)、分步加载、延期加载的策略,减少启动应用时加载的任务,从而提高启动速度。

由于我们打开的页面大多是Activity,下面将给出加速启动Activity的方式:

性能优化1-3.png

4.2 页面显示速度

(1)优化原因(即页面显示速度慢的原因)

  • 页面需绘制的内容(布局 & 控件)太多,从而导致页面测量时间过长;

  • 绘制效率过低,从而导致绘制时间过长。

(2)优化方案:Android性能优化:手把手带你全面了解 绘制优化

4.3 响应速度

(1)优化原因:应用程序出现ANR情况,从而导致应用程序响应速度慢。关于ANR的简介如下:

性能优化1-4.png

(2)优化方案:使用多线程,将大量且耗时操作放在工作线程中执行。

  • 多线程的方式包括:AsyncTask、继承 Thread类、实现 Runnable接口、Handler消息机制、HandlerThread等。

  • 实际开发中,当一个进程发生了ANR后,系统会在/data/anr目录下创建一个文件traces.txt,通过分析该文件可定位出ANR的原因。

4.4 其他优化方案

(1)合理的刷新机制

性能优化1-5.png

(2)动画的使用

  • 根据不同场景选择合适的动画框架;

  • 使用硬件加速的方式提高流畅度;

  • 使用动画后需停止动画。

4.5 总结

  下面,总结 关于流畅性的性能优化方案:

性能优化1-6.png

5.稳定性

  影响Android应用稳定性的原因有很多,主要是:应用崩溃(Crash)、应用无响应(ANR),这2个错误的结果将导致程序无法使用。下面,将主要讲解该2个优化方向:应用崩溃(Crash)、应用无响应(ANR)。

5.1 应用无响应(ANR)

(1)简介

性能优化1-7.png

(2)优化原理:尽量避免应用程序出现ANR情况。

(3)优化方案:使用多线程,将大量且耗时操作放在工作线程中执行。

  • 多线程的方式包括:AsyncTask、继承 Thread类、实现 Runnable接口、Handler消息机制、HandlerThread等。

  • 实际开发中,当一个进程发生了ANR后,系统会在/data/anr目录下创建一个文件traces.txt,通过分析该文件可定位出ANR的原因。

5.2 应用崩溃(Crash)

(1)优化原理:应用崩溃Crash很多情况是因为内存溢出,即OOM;故需避免出现OOM现象。

(2)内存溢出简介

性能优化1-8.png

(3)优化方案:《Android 性能优化--04:内存优化》

5.3 总结

  下面总结关于稳定性的性能优化方案:

性能优化1-9.png

6.资源节省性

(1)优化原因:由于移动设备的硬件性能有限,故减少应用程序的资源消耗显得十分重要。

(2)优化方向:内存大小、安装包大小、耗电量和网络流量。

6.1 内存优化

(1)优化原因
  避免因不正确使用内存或缺乏管理,从而出现内存泄露(ML)、内存溢出(OOM)、内存空间占用过大等问题,最终导致应用程序崩溃(Crash)。

(2)优化方向:常见的内存问题如下:

  • 内存泄露

  • 内存抖动

  • 图片Bitmap相关

  • 代码质量 & 数量

  • 日常不正确使用

(3)优化方案:关于内存优化后续有专门的篇章介绍。

  • 《Android 性能优化--04:内存优化》

  • 《Android 性能优化--03:内存泄露》

6.2 减少安装包大小

(1)优化原因:应用程序的安装包大小虽对应用程序的使用无影响,但影响的是:

  • 空间占有率:即应用程序占有手机内存的大小;

  • 下载门槛:应用的安装包越大,用户下载的门槛越高。

特别在移动网络下,用户下载应用时,对安装包大小的要求更高,因此减小安装包大小可让更多用户愿意下载和使用产品。

(2)安装包结构介绍

性能优化1-10.png

(3)优化方案

性能优化1-11.png

6.3 减少网络流量

(1)优化原因:每次获取资源时都通过流量或网络加载的方式,将耗费大量网络流量。

(2)优化方案:主要通过缓存减少网络流量,采用三级缓存方案:即内存缓存 - 硬盘缓存- 数据库- 文件 - 网络缓存。

具体描述:当加载资源时,先从内存缓存中寻找;若内存缓存中没有,则从文件缓存中寻找;若文件缓存中没有,最终再通过流量从网络中加载获取。

(3)具体应用:Android:手把手教你构建 WebView 的缓存机制 & 资源预加载方案

6.4 减少应用的耗电量

(1)优化原因
  随着智能手机普及和应用程序App的功能发展,人们的日常生活都离不开智能手机和各式各样的应用程序App,故应用程序的耗电量指标则显得十分重要。

(2)优化方案

性能优化1-12.png

6.5 总结

性能优化1-13.png

7.总结

 %emsp;区别于功能性开发需求的短期性,性能优化是贯穿整个应用程序App项目的持续性需求;虽项目一开始时,性能优化的优先级较低,但当应用程序App的用户体量达到一定规模时,性能优化则非常重要。

 %emsp;本文全面总结了Android开发中的性能优化 所有知识,含:优化方向、原因 & 具体优化方案,下面用2张图总结:

性能优化1-14.png
性能优化1-15.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容