Android-记录启动延迟的问题

Android-记录启动延迟的问题,android,adb,android-4.4-kitkat,nexus-5,Android,Adb,Android 4.4 Kitkat,Nexus 5,我正在尝试记录我的应用程序的启动延迟。我的做法是在Application.onCreate上设置应用程序的开始时间,并提供一个返回时间的公共方法 MyApplication extends Application { Date startUpTime; //Declare variables @Override public void onCreate() { super.onCreate(); setStartupTime();

我正在尝试记录我的应用程序的启动延迟。我的做法是在
Application.onCreate
上设置应用程序的开始时间,并提供一个返回时间的公共方法

MyApplication extends Application {
    Date startUpTime;
    //Declare variables
    @Override
    public void onCreate() {
        super.onCreate();
        setStartupTime();
        //other initializations
    }

    private void setStartUpTime() {
        startUpTime = new Date();
    }

    public Date getStartUpTime() {
        return startUpTime;
    }
}

MyActivity extends Activity {
.
.
.
    @Override
    public void onStart(){
        logStartUpLatency();
        //other onStart stuff
    }

    private void logStartUpLatency() {
        Date currentTime = new Date();
        Date startTime = (MyApplication)getApplicationContext().getStartUpTime();
        long latency = currentTime.getTime() - startTIme.getTime();
        Log.d("Start up Latency is ", Long.toString(latency)):

    }
以下是我测试启动延迟的方法:

  • 亚洲开发银行安装myapk
  • 运行应用程序以获得第一次启动延迟。我可以看到第一次启动时记录的延迟是正确的
  • 再次运行应用程序以测试启动延迟。记录的延迟对于启动(或任意数量的后续启动)是正确的
  • 现在我将我的应用程序的版本代码和名称增加了1。为了模拟升级,我使用了命令adb install-r myapk
  • 现在,我再次运行该应用程序来测试升级后的第一次启动延迟,尽管需要3秒钟,但记录的延迟已超出图表
有人知道为什么会这样吗

更新


因此,如果我使用“adb install-r myapk”安装apk,那么应用程序不会通过
Myapplication.onCreate()

您正在计算的延迟以毫秒为单位。返回自1970年1月1日格林尼治标准时间午夜以来的毫秒数

观察到的3秒时间是因为卸载旧应用程序和安装新应用程序版本的开销。

我建议使用该类。根据文档,您可以轻松地跟踪经过的时间,甚至在过程中添加拆分

这个

产生

D/TAG (3459): methodA: begin
D/TAG (3459): methodA:      9 ms, work A
D/TAG (3459): methodA:      1 ms, work B
D/TAG (3459): methodA:      6 ms, work C
D/TAG (3459): methodA: end, 16 ms

因此,如果我使用“adb install-r myapk”安装apk,则应用程序不会经过Myapplication.onCreate()。这就回答了这个问题。我将另外问一个问题,为什么使用“adb install-r myapk”安装应用程序,然后启动myapk不需要通过MyApplication.onCreate()完成

D/TAG (3459): methodA: begin
D/TAG (3459): methodA:      9 ms, work A
D/TAG (3459): methodA:      1 ms, work B
D/TAG (3459): methodA:      6 ms, work C
D/TAG (3459): methodA: end, 16 ms