月度归档:2017年04月

Traceview 使用

本文介绍如何使用 Traceview 来寻找应用中的耗时方法,从而进行性能优化。

方法

启动 DDMS,选中设备,点击 Start Method Profiling,在设备上进行操作,然后点击 Stop Method Profiling。

整体如下:

启动入口

结果

选择按照 CPU Time/Call 排序,可以找出耗时最高的方法。点击它,会列出调用它的方法和它调用的方法。可以看到主要是 Children 中的 Utils.trimTelNum 方法占用了绝大多数的 CPU 时间。

点击该方法,会跳转至该方法。同上也会列出调用它的方法和它调用的方法。

分析

综合分析,可以看出来主要问题应该是出在 Utils.trimTelNum 方法。它会耗时2s 左右。调用它的地方在 CallRecordsReq.run 中。 找到该方法,分析处理。

耗时方法分两类:

  1. 自身执行需要花费大量时间的方法;
  2. 调用非常频繁的方法。

对于1,在结果中需要按 CPU Time/Call 排序;

对于2,在结果中需要按 Calls+Recur Calls/Total 排序。

参考

  1. https://developer.android.com/studio/profile/traceview.html
  2. https://developer.android.com/studio/profile/am-methodtrace.html#trace

Reformat Code

本文介绍有关格式化代码的知识。

格式化单个文件

快捷键:Command + Option + L

批量格式化工程下的所有文件

在工程上右击,选择 Reformat Code,然后可以选中 Optimize imports 和 Rearrange entries 来进一步优化包引用和重新排列类成员。

批量格式化之前请 Clean 工程

因为可能会格式化 build 中的文件,一方面这是没必要的,另一方面 build 中的文件有可能会产生 File Cache Conflict 问题。

File Cache Conflict:https://www.jetbrains.com/help/webstorm/2016.2/file-cache-conflict.html

如下图:

Code Style

Android Studio 默认的 style 就 ok,这里再介绍一种:

SquareAndroid:https://github.com/square/java-code-styles/blob/master/configs/codestyles/SquareAndroid.xml

在 Android Studio -> Preferences -> Editor -> Code Style -> Scheme -> Manage 中来导入。