81

アプリがクラッシュした場合、アプリがクラッシュしたため閉じる必要があることを Android から通知される前に、数秒間ハングします。だから私は自分のアプリですべての例外を一般的にキャッチすることを考えていました:

try {
    // ... 
} catch(Exception e) { 
    // ...
} 

Activityそして、Android のおかげで遅延が発生するのではなく、アプリケーションが即座にクラッシュしたことを説明する新しいものを作成します (また、エラーの詳細をメールで送信する機会をユーザーに提供します)。これを達成するためのより良い方法はありますか、それとも推奨されませんか?

更新: ART が有効になっている Nexus 5 を使用していますが、以前はアプリのクラッシュで発生していた遅延 (最初に話していた「ハング」) に気付いていません。現在はすべてがネイティブ コードになっているため、すべてのクラッシュ情報を取得するとともに、クラッシュが即座に発生すると思います。おそらく、Nexus 5 は単に速いのでしょう :) とにかく、これは Android の将来のリリースでは心配ないかもしれません (ART が Android L のデフォルトのランタイムになることを考えると)。

4

3 に答える 3

9

一般的な警告ダイアログを使用して、エラー メッセージをすばやく表示できます。例えば...

//******************************************
//some generic method
//******************************************
private void doStuff()
{       
    try
    {
        //do some stuff here
    }
    catch(Exception e)
    {
        messageBox("doStuff", e.getMessage());
    }
}


//*********************************************************
//generic dialog, takes in the method name and error message
//*********************************************************
private void messageBox(String method, String message)
{
    Log.d("EXCEPTION: " + method,  message);

    AlertDialog.Builder messageBox = new AlertDialog.Builder(this);
    messageBox.setTitle(method);
    messageBox.setMessage(message);
    messageBox.setCancelable(false);
    messageBox.setNeutralButton("OK", null);
    messageBox.show();
}

print stacktrace など、他のエラー処理オプションをこのメソッドに追加することもできます。

于 2013-08-09T09:40:46.523 に答える
4

Log クラスに "wtf" (ひどい失敗) メソッドを見つけました。説明から:

システム構成によっては、DropBoxManager にレポートが追加されたり、エラー ダイアログが表示されてプロセスがすぐに終了したりすることがあります。

http://developer.android.com/reference/android/util/Log.html

于 2014-03-16T15:19:55.483 に答える