在未处理的异常中显示对话框

3
我希望能够在我的Xamarin Android应用程序崩溃时显示一个对话框,类似于“很抱歉,应用程序已崩溃。您是否想向开发人员发送错误报告?”。
我已经连接到了Thread.DefaultUncaughtExceptionHandler,它会在捕获异常时调用UncaughtException。
当捕获异常时,我尝试启动一个新的活动来显示对话框-对话框被创建,但只显示一个带有标题的空白对话框。OnCreate从未被调用,对话框似乎只是挂起。
如果我在应用程序正常运行时正常调用显示对话框的代码,它将正确显示和运行,因此对话框代码似乎没有任何问题。
有人知道如何解决这个问题吗?

可能是重复的问题:https://dev59.com/dV7Va4cB1Zd3GeqPM8eK - Cheesebaron
3个回答

1

我发现了一种捕获未处理异常的方法。这取决于异常抛出的位置。如果异常发生在后台线程上,可以通过在继承自Mono应用程序类的类中连接以下事件来捕获它。

AppDomain.CurrentDomain.UnhandledException

我认为你的应用程序已经崩溃,系统没有可用的上下文来创建新的活动并显示对话框。
我使用了下面链接中的示例,只要异常发生在主UI线程之外,我就能够恢复并显示toasts,因此我相信它可以用来做你需要的事情。
更多信息: http://xandroid4net.blogspot.com/2013/11/how-to-capture-unhandled-exceptions.html

这需要在每个项目中实现吗?例如,Android、iOS和WP8.1,而不是在PCL中实现? - JKennedy
我会把处理异常的逻辑放在PCL中,但你需要尽快注册事件处理程序,以便将异常路由到你的PCL逻辑。简而言之,答案是肯定的。在每个项目(Android、iOS等)的启动时注册处理程序,但将处理程序放在你的PCL中。 - user3027550

1

0

我能够使用你提供的示例,在应用程序崩溃时显示 Toast 消息。但是我无法显示警报窗口。 我正在编写以下代码,以在 Android 设备的 UnHandled 异常事件中显示警报消息。

 'alert.SetTitle("Un Handled Exception Event");
 SetMessage("Un Handled Exception Event triggered");
 SetCancelable(true);
 Show();'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接