gpt4 book ai didi

forms - Xamarin Forms 应用程序崩溃没有日志

转载 作者:行者123 更新时间:2023-12-04 11:35:12 28 4
gpt4 key购买 nike

我正在使用具有路线跟踪功能的 Xamarin Forms 开发一些应用程序。尽管我正在使用 AppCenter,即在 App.xaml.cs OnStart 我添加

    protected async override void OnStart()
{
AppCenter.Start("android=__mycode___" +
"uwp={Your UWP App secret here};" +
"ios={Your iOS App secret here}",
typeof(Analytics), typeof(Crashes));


bool hadMemoryWarning = await Crashes.HasReceivedMemoryWarningInLastSessionAsync();
ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync();

if (crashReport != null)
{
Analytics.TrackEvent(crashReport.StackTrace);
}

}
事实上,我在 AppCenter 中使用 Crashes.GenerateTestCrash() 测试了我的应用程序并获得了测试崩溃报告。此外,我使用这种方法发现了一些错误。但是现在至少有一个原因使我的应用程序崩溃而没有任何消息发送到 AppCenter。有什么线索可以解决这个问题吗?

最佳答案

尝试使用实际的异步事件处理程序。

private event EventHandler onStart = delegate { };

protected override void OnStart() {
onStart += handleStart; //subscribe
onStart(this, EventArgs.Empty); //raise event
}

private async void handleStart(object sender,EventArgs args) {
onStart -= handleStart; //unsubscribe
try {
AppCenter.Start("android=__mycode___" +
"uwp={Your UWP App secret here};" +
"ios={Your iOS App secret here}",
typeof(Analytics), typeof(Crashes));


bool hadMemoryWarning = await Crashes.HasReceivedMemoryWarningInLastSessionAsync();
ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync();

if (crashReport != null) {
Analytics.TrackEvent(crashReport.StackTrace);
}
} catch (Exception ex) {
//...handle exception or log as needed
}
}
OnStart是一个简单的 void 方法,而不是实际的事件处理程序。这意味着当它被设为异步时,它将成为一个即发即弃的函数,它不会让你捕捉到任何可能发生在其中的异常。
如果它在启动时没有被捕获,则可能意味着您正在使用非事件 async void 在应用程序内的某处做类似的事情。没有被发现并且正在使应用程序崩溃。
首先搜索任何 async void在您的代码中并检查以确保它是一个实际的事件处理程序。

关于forms - Xamarin Forms 应用程序崩溃没有日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68089505/

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