如何在应用中心测量和记录应用启动时间?



我目前正在开发一个Xamarin.Android应用程序,我不仅想在每次提交时构建应用程序,还想记录启动时间(想法:如果启动时间增加,很容易识别由于哪个更改(。

使用App Center可以吗?也许将 App Center 的启动测试功能与应用程序见解结合使用?我知道 Logcat 显示启动时间(启动进程和完成绘制相应活动之间的时间(,是否可以使用应用程序见解提取?

我一直在做的是,使用秒表实例,我测量我正在调用的每个方法,将它们放入字典中,然后使用 TrackEvent 方法将所有信息一起发送。它可能不会告诉您渲染所需的时间,但它可以让您很好地了解执行时间最长的方法。

你会有这样的东西:

protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
var dictionary = new Dictionary<string, string>();
var totalTime = 0L;
var stopWatch = new Stopwatch();
stopWatch.Start();
UserDialogs.Init(() => this);
stopWatch.Stop();
totalTime += stopWatch.ElapsedMilliseconds;
dictionary.Add("UserDialogs.Init(() => this); (ms)", stopWatch.ElapsedMilliseconds.ToString());
stopWatch.Restart();
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
stopWatch.Stop();
totalTime += stopWatch.ElapsedMilliseconds;
dictionary.Add("global::Xamarin.Forms.Forms.Init(this, savedInstanceState); (ms)", stopWatch.ElapsedMilliseconds.ToString());
stopWatch.Restart();
LoadApplication(new App(new AndroidInitializer()));
stopWatch.Stop();
totalTime += stopWatch.ElapsedMilliseconds;
dictionary.Add("LoadApplication(new App(new AndroidInitializer())) (ms)", stopWatch.ElapsedMilliseconds.ToString());
dictionary.Add("Total Startup Time", totalTime.ToString());
Analytics.TrackEvent("Load completed", dictionary);
}

最新更新