簡體   English   中英

Android - 記錄啟動延遲的問題

[英]Android - Problems with logging the start up latency

我正在嘗試記錄我的應用程序的啟動延遲 我這樣做的方法是在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)):

    }

這就是我測試啟動延遲的方法:

  • adb安裝myapk
  • 運行應用程序以獲得第一次啟動延遲。 我可以看到記錄的延遲對於第一次啟動是正確的
  • 再次運行應用程序以測試啟動延遲。 記錄的延遲對於開始(或任何后續啟動次數)是正確的
  • 現在我將應用程序的版本代碼和名稱增加1.為了模擬升級,我使用了命令adb install -r myapk。
  • 現在我再次運行應用程序以測試升級后的第一個啟動延遲,即使需要3秒,記錄的延遲也不在圖表中。

有人知道為什么會這樣嗎?

更新

因此,如果我使用“adb install -r myapk”安裝apk,則應用程序不會通過Myapplication.onCreate()

我建議使用TimingLogger類。 根據文檔,您可以輕松跟蹤已用時間,甚至可以在流程中添加拆分。

這個

TimingLogger timings = new TimingLogger(TAG, "methodA");
// ... do some work A ...
timings.addSplit("work A");
// ... do some work B ...
timings.addSplit("work B");
// ... do some work C ...
timings.addSplit("work C");
timings.dumpToLog();

產生

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

您計算的延遲以毫秒為單位。 Date#getTime()返回自1970年1月1日格林威治標准時間午夜以來的毫秒數。

觀察到的3秒時間是因為卸載舊應用程序和安裝新應用程序構建的開銷。

因此,如果我使用“adb install -r myapk”安裝apk,則應用程序不會通過Myapplication.onCreate()。 所以這回答了這個問題。 我將問一個單獨的問題,為什么使用“adb install -r myapk”安裝應用程序,然后啟動myapk不會通過MyApplication.onCreate()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM