使用UnobservedTaskException停止HockeyApp使我的Xamarin iOS应用程序崩溃

理查德·布莱维特(Richard Blewett)

我们有一个Xamarin iOS应用程序,它位于高度异步的PCL库的顶部。有时任务可能会在库中发生故障,而不会被观察到。因此,我们在TaskScheduler上连接了UnobservedTaskException处理程序,以确保这不一定会使我们的应用程序崩溃。

在我们启用HockeyApp集中崩溃报告之前,该方法一直很好。Hockey添加了自己的处理程序来处理未观察到的任务异常,该异常通常会在向其服务器发送崩溃报告后终止该应用程序。我对他们为AppDomain UnhandledException处理程序执行此操作没有问题,但是我需要阻止他们在未观察到的任务异常情况下杀死应用程序。

似乎有一种机制可以为这些异常安装自定义处理程序,但是我看不到如何在Xamarin iOS Hockey SDK中安装它

这是我们用来启用曲棍球的代码

var manager = BITHockeyManager.SharedHockeyManager;

manager.Configure(APPID);
#if DEBUG
   manager.DebugLogEnabled = true;
#endif

manager.StartManager();

有谁知道如何为UnobservedTaskExceptions覆盖HockeyApp的默认行为?

寿司宿醉

UnobservedTaskException事件处理程序是硬编码的StartManager方法有没有直接的方法去除。

TaskScheduler.UnobservedTaskException += (sender, e) => ThrowExceptionAsNative(e.Exception);

参考:https : //github.com/bitstadium/HockeySDK-Xamarin/blob/28e67ecba14d00c8bea8043e08678af6044d33cf/source/HockeySDK.iOSBindings/Additions.cs#L43

我个人是从源代码构建的,公开地公开ThrowExceptionAsNative并添加配置方法以在StartManager调用时包括/排除默认处理程序就像HockeyApp使用HockeySDK-Windowsapi一样。

因此,在捕获一个a时,UnobservedTaskException您可以选择自己处理它或将其作为本机异常抛出。

这很像原始的Xamarin本机绑定,而且我不明白他们为什么这样做,就像在HockeySDK-Windows代码中那样,他们删除了默认的处理方式UnobservedTaskException

从.NET 4.5开始,默认情况下,UnobservedTaskExceptions不再导致应用程序崩溃。SDK尚未针对此进行调整,但仍然会记录这些错误并导致程序退出,尽管这可能不是必需的或无意的。

希望继续使用处理程序的用户应在RegisterUnobservedTaskExceptionHandler()RegisterDefaultUnobservedTaskExceptionHandler()之后添加调用Configure()

对于几个不希望自定义构建的客户HockeySDK.Xamarin,我调用EventHandler通过反射进行了删除,并添加了我们的自定义处理程序。使用这种方法,如果需要,您将没有公众可以将异常作为本机异常抛出,但是可以通过更多的反思来做到这一点:-/StartManagerThrowExceptionAsNative

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Xamarin.Forms-iOS应用程序启动后崩溃

在 PCL Xamarin 中启动 IOS 时应用程序崩溃

xamarin.forms ios 应用程序开始随机崩溃

我的警报弹出窗口使我的应用程序崩溃 - iOS

我的iPhone应用程序因ios 7而崩溃

iOS 8.0 UIWebView文件输入使我的应用程序崩溃

我的应用程序崩溃了

Xamarin iOS“演练-使用Elements API创建应用程序”崩溃

使用AssociatedObject为UIAlertController设置AutomationId时,Xamarin iOS应用程序崩溃-objc_getAssociatedObject

通知渠道应用程序崩溃并停止

MediaPlayer停止按钮崩溃应用程序

使用语音工具包ios时由于未捕获的应用程序崩溃而终止应用程序

使用iOS 10 SDK构建的应用程序在iOS 8上运行时崩溃

在 iOS 故事板中使用“Show”会导致 iOS 应用程序崩溃吗?

RelativeLayout onClickListener使我的应用程序崩溃

linearGradientProps 使我的应用程序崩溃

我的应用程序不断崩溃

setOnClickListener使我的Wear应用程序崩溃

我的应用程序不断崩溃

UIModalTransitionStylePartialCurl使我的应用程序崩溃

为什么我的应用程序崩溃了?

我的 android 应用程序不断崩溃

我的应用程序在MainActivity中崩溃

onSaveInstanceState使我的应用程序崩溃

_tableView reloadData使我的应用程序崩溃

setOnClickListener(this)使我的应用程序崩溃

分页使我的应用程序崩溃

onBackPressed()使我的Webview应用程序崩溃

CoordinatorLayout使用IndexOutOfBoundsException使应用程序崩溃