3

Xamarin Android アプリケーションがクラッシュしたときにダイアログを表示できるようにしたいと考えています。「申し訳ありませんがアプリケーションがクラッシュしました。開発者にエラー レポートを送信しますか?".

例外がキャッチされたときに UncaughtException を呼び出す Thread.DefaultUncaughtExceptionHandler にフックしました。

例外がキャッチされると、ダイアログを表示するために新しいアクティビティを開始しようとします - ダイアログは作成されますが、タイトルのある空白のダイアログのみが表示されます。OnCreate が呼び出されることはなく、ダイアログがハングしているように見えます。

アプリケーションの実行中にダイアログを表示するコードを呼び出すと、ダイアログは正常に表示および実行されるため、ダイアログコードに問題はないようです。

誰でもこの問題を解決する方法を知っていますか?

4

3 に答える 3

1

未処理の例外をキャッチする方法を見つけました。例外がスローされる場所によって異なります。バックグラウンド スレッドで例外が発生した場合は、Mono Application クラスから継承するクラスで次のイベントを接続することで、例外を発生させることができます。

AppDomain.CurrentDomain.UnhandledException

アプリがクラッシュし、システムが新しいアクティビティを作成してダイアログを表示するためのコンテキストが利用できないと思います。

以下のリンクの例を使用しましたが、メインの ui スレッドで例外が発生する限り、回復してトーストを表示できるので、必要なことを行うために使用できると確信しています。

詳細: http://xandroid4net.blogspot.com/2013/11/how-to-capture-unhandled-exceptions.html

于 2013-11-24T15:45:41.017 に答える