Android初识性能优化及工具笔记 | 青训营笔记

173 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第1天

前言

这是我在青训营发表的第一篇笔记,仅以此来记录我在青训营的学习成长历程。

本篇笔记的第一部分为课程初识性能优化及工具的课程笔记;

第二部分为课后的思考与总结。

一.初识性能优化及工具课程笔记

1.为什么要做性能优化?

  • 从表面上来看

对于用户来说,好的性能优化可以带来流畅舒适的使用体验;

对于团队来说,好的性能优化可以带来更高的收益与用户反馈。

  • 从深处去看

近几年硬件性能提升速度变缓,而软件性能提升速度快于硬件性能的提升。

移动处理器的发展在一段时间内还会受到电池技术的限制。

  • 小结

从用户和App团队方面来看,性能优化对用户是必要的,对团队也是必要的;

从硬件发展和趋势来看,软件的性能发展必将会受到硬件性能的制约,所以性能优化是必要的。

2.性能优化是什么?

  • 性能优化的目标

性能优化的目标即快、稳、省。

快即指的是流畅度,用户希望流畅度越高越好,卡顿越少越好。

稳是指稳定性,用户希望稳定性越高越好,在使用App的时候尽可能的不会发生崩溃(App闪退等),减少超时情况的发生(App无相应,使用App时出现大幅度掉帧等)。

省指的是资源的节省(功耗低,耗电少等)。

  • 流畅性优化

首先我们要了解Android的线程结构。

微信截图_20220810231351.png

其中,在Main Thread(UI线程)中,你的代码将会影响System Events、Input Events、Application、Services和Alarm。

其次,当UI Drawing的反映时间小于等于16ms时,我们认为软件运行是流畅的。

由此我们可以得知产生卡顿感的三大原因:

  1. 你的代码影响到了UI线程,从而造成delay。
  2. 在Input Events中,造成了丢帧的情况。
  3. 在LameWork中,造成了丢帧的情况。

那么我们如何去解决卡顿呢?

很简单直接的方法就是把所有耗时的操作转移到其他线程,主线程中只保留主要的操作。

  • 稳定性优化

如图所示。

微信截图_20220810232135.png

从以上方面去解决App的稳定性问题。

  • 资源优化

如图所示。

微信截图_20220810232337.png

Android需要做以上的资源优化。

其中端侧资源中,如不同亮度所带来的功耗差异,不同的应用色系所带来的功耗差异,都是需要去进行对比从而进行资源优化。

在服务侧资源中,在拥有较大流量的软件中,服务侧资源的资源优化是相当重要的,否则在很多用户同时使用软件时,服务器可能会因为承受不住压力而崩溃。

  • 系统级优化

移动操作系统和硬件厂商也在也不断的进行性能优化。

如近年来Android发布的HMP scheduler、sdcardFS、F2FS等。

3.性能优化工具选型

目前主流的性能优化工具有GPU呈现模式LayertoolCPU ProfilerTraceViewSystrace等。

二.课后的思考与总结

上完初识性能优化及工具课程后,对Android性能优化有了初步的认识,了解了为什么要性能优化,性能优化是什么以及如何使用工具进行性能优化。课程中性能工具的选型较为难理解以及使用,每一种性能优化工具都有各自的优势与适合的使用场景,如GPU呈现模式,它是Android自带的一款性能优化工具,它可以很方便且简单的使用,在设置里的开发者选项中便可找到与使用,且GPU呈现模式很直观的能看出软件运行时的性能,适合对性能优化做一个初步的了解,但其缺陷是并不能进行性能优化,我认为必须要充分了解和使用后才可以更加熟悉并使用各种性能优化工具。