gpt4 book ai didi

Android - 记录启动延迟的问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:45 26 4
gpt4 key购买 nike

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

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类(class)。根据文档,您可以轻松跟踪耗时,甚至可以在流程中添加拆分。

这个

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

关于Android - 记录启动延迟的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com