电池调试¶
尽管有大量优秀的工具可用,但 Android 性能分析可能非常棘手。本文档旨在解释如何追踪电池和性能问题。
Battery Historian¶
每当 Android 上出现电池问题时,Google 的第一个建议是使用 Battery Historian 工具来解析 Android 错误报告并显示导致电池电量消耗的原因。
虽然对于大多数 Android 应用程序来说这是一个不错的选择,但它在分析 Focus 和 Klar 中的大多数电池问题时几乎毫无用处。这是因为 Focus 和 Klar 使用前台服务,只要您的网页处于打开状态,该服务就会一直运行。该服务是必需的,以使应用程序保持在前台,以便数据可以保存在内存中,而不是持久保存到磁盘。这可以防止应用程序被操作系统杀死,并将您宝贵的 Web 会话和页面数据发送到垃圾回收器。
Battery Historian 的前提是大多数电池问题是由过多的唤醒锁引起的。它通过显示唤醒锁、何时保持 WiFi 或蜂窝无线电唤醒以及不同时间段内电池电量消耗的速度来帮助程序员。Focus 和 Klar 不需要唤醒锁,并且它们不会很有趣,因为应用程序在运行的大部分时间都保持在前台。
分析 Battery Historian 结果仍然很有趣。 这里有使用说明 供您尝试。
Android Studio Profiler¶
如果 Battery Historian 没有指出无线电或屏幕保持激活状态是问题所在,那么接下来要查找的就是过度的 CPU 活动。有几种工具可以用来查看这一点,但最容易上手的是 Android Studio 中内置的分析器。
在 Android Studio 中打开项目。如果屏幕底部没有 Android Profiler 选项卡,请从 View -> Tool Windows -> Android Profiler 中打开它。
确保您正在运行应用程序的调试版本,并从 Profiler 顶部的下拉菜单中选择设备和可调试进程。
单击 CPU 图表以获取其他 CPU 详细信息。选择 instrumented 以提高数据的分辨率。如果电池电量消耗发生在手机空闲时,您可以轻松检查以找出导致 CPU 活动的原因,因为根本不应该有太多活动。
这里有更多 关于如何普遍使用 Android Profiler 的信息。 这里有更多关于 CPU Profiler 的信息 。
Systrace¶
Systrace 并没有增加 Android Studio 的 Profiler 已经提供的太多内容,并且界面是一个笨拙的网页。如果您愿意,您仍然可以尝试它。 这里有使用说明。
Traceview¶
虽然您可以从 Android Profiler 和 Systrace 中获取大量有用且有趣的信息,但获取完整的调用栈很有帮助。最简单的方法是使用旧的 Android 分析工具 Traceview。您可以从代码中选择何时开始和停止跟踪,使用“Debug.startMethodTracing(“name”)” 和 “Debug.stopMethodTracing()”。
运行代码时,它将在 SDcard 的 files 文件夹中生成一个跟踪文件。您可以通过在 Android Studio 的设备文件浏览器中双击它或更好地在 Android 设备监视器中打开它来读取跟踪文件。您可以在最近的 Android Studio 版本中启动 Android 设备监视器,方法是运行 $ANDROID_SDK/tools/monitor。