使用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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

我的应用程序崩溃了

来自分类Dev

iOS应用程序(使用核心数据)在更新后崩溃,但仅应用程序商店版本崩溃

来自分类Dev

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

来自分类Dev

MediaPlayer停止按钮崩溃应用程序

来自分类Dev

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

来自分类Dev

PageViewController:SetViewController崩溃了我的应用程序

来自分类Dev

setOnClickListener使我的Wear应用程序崩溃

来自分类Dev

Android setContentView使我的应用程序崩溃

来自分类Dev

UIModalTransitionStylePartialCurl使我的应用程序崩溃

来自分类Dev

onSaveInstanceState使我的应用程序崩溃

来自分类Dev

_tableView reloadData使我的应用程序崩溃

来自分类Dev

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

来自分类Dev

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

来自分类Dev

setOnClickListener使我的Wear应用程序崩溃

来自分类Dev

我的应用程序不断崩溃

来自分类Dev

RelativeLayout onClickListener使我的应用程序崩溃

来自分类Dev

我的应用程序在MainActivity中崩溃

来自分类Dev

分页使我的应用程序崩溃

来自分类Dev

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

来自分类Dev

我的应用程序不断崩溃

来自分类Dev

我的 android 应用程序不断崩溃

来自分类Dev

linearGradientProps 使我的应用程序崩溃

来自分类Dev

使用HttpResponseCache使应用程序崩溃

来自分类Dev

使用Proguard导致应用程序崩溃

来自分类Dev

CoordinatorLayout使用IndexOutOfBoundsException使应用程序崩溃

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    我的应用程序崩溃了

  6. 6

    iOS应用程序(使用核心数据)在更新后崩溃,但仅应用程序商店版本崩溃

  7. 7

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

  8. 8

    MediaPlayer停止按钮崩溃应用程序

  9. 9

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

  10. 10

    PageViewController:SetViewController崩溃了我的应用程序

  11. 11

    setOnClickListener使我的Wear应用程序崩溃

  12. 12

    Android setContentView使我的应用程序崩溃

  13. 13

    UIModalTransitionStylePartialCurl使我的应用程序崩溃

  14. 14

    onSaveInstanceState使我的应用程序崩溃

  15. 15

    _tableView reloadData使我的应用程序崩溃

  16. 16

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

  17. 17

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

  18. 18

    setOnClickListener使我的Wear应用程序崩溃

  19. 19

    我的应用程序不断崩溃

  20. 20

    RelativeLayout onClickListener使我的应用程序崩溃

  21. 21

    我的应用程序在MainActivity中崩溃

  22. 22

    分页使我的应用程序崩溃

  23. 23

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

  24. 24

    我的应用程序不断崩溃

  25. 25

    我的 android 应用程序不断崩溃

  26. 26

    linearGradientProps 使我的应用程序崩溃

  27. 27

    使用HttpResponseCache使应用程序崩溃

  28. 28

    使用Proguard导致应用程序崩溃

  29. 29

    CoordinatorLayout使用IndexOutOfBoundsException使应用程序崩溃

热门标签

归档