使用 Kotlin 进行 Android 编程
by Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, G. Blake Meike, Mike Dunn
第 11 章 使用 Android 剖析工具的性能考虑因素 使用Android 剖析工具的性能考虑因素
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在 Android 中使用熟练的并发性可以提高应用程序的性能。这就是我们将 Android 中的 Kotlin 并发作为本书主要重点的原因。为了提供性能瓶颈的解决方案,您必须能够在第一时间发现它们。不用担心:本章将介绍常用的 Android 工具,以检查性能方面的潜在问题。
在野外,安卓系统面临着影响性能和电池寿命的现实挑战。例如,并不是每个人的移动计划中都有无限数据,也不是每个人都有可靠的连接。现实情况是,Android 应用程序必须相互竞争有限的资源。任何 Android 应用程序都必须认真考虑性能问题。Android 开发不仅限于创建应用程序。有效的开发还能确保流畅无缝的用户体验。即使您对 Android 开发有深入的了解,您的应用程序也可能存在以下问题:
-
性能下降
-
启动慢/对用户交互的响应慢
-
电池耗尽
-
浪费资源,堵塞内存
-
不会导致崩溃或产生异常,但会影响用户体验的用户界面错误
以上列举的应用程序中突然出现的奇怪行为并非详尽无遗。正如前面几章所展示的,如果还要跟踪交互的 Android 组件,管理多线程就会变得复杂。即使你对多线程有扎实的了解,在使用剖析工具分析性能之前,也很难说应用程序到底是如何运行的。为了解决这些模糊问题,有几种有用的工具可以对 Android 的各个方面进行剖析。如图 11-1 所示,其中四个可以在 Android Studio 中直接检索和使用。
图 11-1. Android Studio 剖析器和 LeakCanary 对于识别性能瓶颈非常有用。
在本章中,我们将介绍 Android Studio 的Android Profiler和一个名为LeakCanary 的流行开源库中的剖析工具。我们将通过剖析现实生活中的应用程序来找出潜在的性能瓶颈,从而探索每一种剖析工具。还记得前几章介绍的登山应用程序吗?惊喜吧!它的灵感来自 TrekMe。TrekMe 是一款 Android 徒步旅行应用程序,它是一个开源 Android 项目,用户可以下载交互式地形徒步旅行路线,以便在徒步旅行时离线使用。TrekMe 一开始是一个 Java 项目,但目前其代码库 80%+ 是 Kotlin。以下是 TrekMe 的一些重要功能,用户可以从中受益:
-
下载供离线使用的地形图。
-
即使在没有网络的情况下,也能获取设备的实时位置,同时该应用会尽力延长电池寿命。
-
在您最需要的时候,详细跟踪远足情况,而不会耗尽设备的电池。
-
无需互联网连接即可访问其他有用信息(创建地图除外)。
我们鼓励你探索 TrekMe,以便跟上本章的进度。你可以从 GitHub 获取源代码。克隆项目后,用 Android Studio 打开它。最后,从安卓虚拟设备(AVD)管理器中运行一个模拟器实例,你打算在该模拟器上运行 TrekMe。
性能方面的考虑至关重要。在任何应用程序中发现性能滞后并不罕见,但必须谨慎对待这种 "钓鱼考察"。开发人员应自行决定最相关的工具,以及哪些优化措施的收益大于创建成本。对应用程序进行剖析可以客观地调查应用程序的性能。为了举例说明您可能会遇到的意外情况,我们将使用 ...