在移动应用开发中,我们有时需要监测一些流程的耗时,比如应用启动耗时,页面跳转耗时等,仅仅凭借肉眼来观察很不准确,我们可以通过几种方式来实现,一种方法是通过shell来获取启动耗时,一种是通过代码打点输出耗时,还有一种通过插桩,这里简单介绍下前两种。
一、adb shell am方式
使adb shell获取应用真实启动时间代码如下:
adb shell am start -W [packageName]/[packageName.SplashActivity]
执行后会得到三个时间:ThisTime、TotalTime和WaitTime,其中TotalTime表示应用的启动时间,包括创建进程+Application初始化+Activity初始化到界面显示。
二、代码打点
通过代码打点可以准确获取每个方法的执行时间,相关代码如下:
/**
* 耗时监视器对象,记录整个过程的耗时情况,可以用在很多需要统计的地方,比如Activity的启动耗时和Fragment的启动耗时。
*/
public class TimeMonitor {
private final String TAG = TimeMonitor.class.getSimpleName();
private int mMonitorId = -1;
private HashMap<String, Long> mTimeTag = new HashMap<>();
private long mStartTime = 0;