1

私の Monodroid アプリケーションでは、未処理の例外の後に次のことを行いたいと考えています。

  1. エラーをサーバーに送信します。
  2. アプリケーションがクラッシュしたことを (おそらくトースト メッセージで) ユーザーに通知します。
  3. アプリケーションを正常に終了します。

#1 は実装しましたが、#2 と #3 を実装するのに苦労しています。

未処理の例外が発生した後、Toast を使用できないようです。また、ユーザーに代わってアプリを終了するのはよくないと警告されました。

誰かが私を正しい方向に向けることができますか?

これが私のコードです:

using System;
using Android.App;
using Android.Runtime;
using Android.Widget;

namespace MyAppsNamespace
{
    [Application]
    public class MyApplication : Application
    {
        public static MyApplication Current { get; private set; }

        public MyApplication (IntPtr handle, global::Android.Runtime.JniHandleOwnership transfer) : base(handle, transfer)
        {
            Current = this;
        }

        public override void OnCreate()
        {
            base.OnCreate();
            AndroidEnvironment.UnhandledExceptionRaiser += (sender, args) => LogException(args.Exception);
        }

        public static void LogException(Exception exception)
        {
            var phoneId = Guid.NewGuid(); // just for testing purposes
            var client = AppConfig.ErrorLoggingServiceClient;
            var response = client.Send<ErrorLoggingResponse>(new ErrorLoggingEntry
                {
                    PhoneId = phoneId,
                    ErrorTime = DateTime.UtcNow,
                    Message = exception.Message,
                    StackTrace = exception.StackTrace
                }); // This works fine (i.e. I've implemented #1)
            Toast.MakeText(Context, String.Format("An error occurred. Please call Prod Support at 1-800-555-1212. [Phone Id: '{0}']", phoneId), ToastLength.Short).Show(); // This has no impact.
        }
    }
}
4

1 に答える 1