使用Android Profiler评估应用性能

戈壁老王
对于Android Profiler我也是在学习中,所以这次打算全程翻译Android Developers上的文章。一方面Developers上文档写的很详细,自己也写不出别的花样;另一方面当做学习笔记,便于以后查阅。建议英文好的同学还是直接看原文,翻译的文章难免加入个人理解,也就可能会导致误解。

不习惯使用Profiler的同学还是可以通过”Sdk/tools/monitor“启动Android Monitor的,但估计被去掉是早晚的事。

在Android Studio 3.0及更高版本中,Android Profiler取代了Android Monitor工具。 Android Profiler工具提供了实时数据,可帮助您了解您的应用如何使用资源状态。Android Profiler中包含四个独立的Profiler,分别为:

  • CPU Profiler:跟踪CPU的活动。
  • Memory Profiler:跟踪Java堆栈和内存分配。
  • Network Profiler:跟踪网络事件。
  • Energy Profiler:跟踪功耗的状态。

若要打开Profiler窗口,请选择View > Tool Windows > Profiler,或单击工具栏中的 Profile。如果弹出Select Deployment Target对话框提示,请选择要在其上分析应用程序的设备。如果已通过USB连接设备,但未看到列出的设备,请确保已启用USB调试。如果您使用的是Android模拟器或已Root设备,Android Profiler会列出所有正在运行的进程,即使这些进程可能无法调试。当启动可调试应用程序时,默认情况下会选择该进程。在断开设备连接或单击End Session之前,Android Profiler会继续收集分析数据。

android-profiler-callouts_2x.png

  1. Android Profiler显示当前正在分析的进程和设备。
  2. Sessions窗格中,选择要查看的会话,或启动新的分析会话。
  3. 使用缩放按钮控制要查看的时间线数量,或使用Attach to live按钮跳转到实时更新。
  4. 事件时间线显示与用户输入相关的事件,包括键盘活动、音量控制更改和屏幕旋转。
  5. CPU、内存、网络和功耗的图表共享时间轴视图。

此共享时间轴视图仅显示时间线图。要访问详细的分析工具,请单击与要检查的性能数据相对应的图形。例如,要访问工具以检查堆和跟踪内存分配,请单击Memory视图。默认情况下,并非所有分析数据都可见。如果您看到提示说“Advanced profiling is unavailable for the selected process”,则可以在运行配置中启用高级分析以查看其他数据。

Sessions

您可以将Profiler数据保存为sessions,在退出Android Studio之前会一直保留这些会话。通过多个会话中记录的信息并在它们之间进行切换,可以比较不同场景中的资源使用情况。

  • 若要启动新会话,请单击Start a new profiling session按钮,然后从出现的下拉菜单中选择一个应用程序进程。当您记录一个跟踪或抓取堆dump时,Android Studio会将该数据(以及应用程序的网络活动)作为单独的条目添加到当前会话中。
  • 若要停止向当前会话添加数据,请单击Stop the current profiling session
  • 若要导入从以前运行的Android Studio导出的跟踪,请单击Start new profiler session,然后选择Load from file

启用高级分析

为了在运行Android 7.1或更低版本的设备时能显示高级分析数据,Android Studio必须在编译的应用程序中注入监控逻辑。高级分析提供的功能包括:

  • 所有Profiler窗口上的事件时间线
  • Memory Profiler中分配的对象数
  • Memory Profiler中的垃圾收集事件
  • Network Profiler中所有传输文件的详细信息

要启用高级分析,请执行以下步骤:

  1. 选择Run > Edit Configurations
  2. 在左窗格中选择应用程序模块。
  3. 单击Profiling选项卡,然后选中Enable advanced profiling
  4. 再次生成并运行应用程序。

高级分析配置会使build过程变慢,因此只有在您希望开始分析应用程序时才应启用它。

参考文档:

Android Developers: android profiler

阅读 1.4k

老王系统屋
做为一个不称职的老年码农,一直疏忽整理笔记,开博记录一下,用来丰富老年生活,

做为一个不称职的老年码农,一直疏忽整理笔记,开博记录一下,用来丰富老年生活,

58 声望
13 粉丝
0 条评论
你知道吗?

做为一个不称职的老年码农,一直疏忽整理笔记,开博记录一下,用来丰富老年生活,

58 声望
13 粉丝
宣传栏