[英]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 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.