アプリケーションがクラッシュしたときのユーザー体験を向上させる--煩わしい「申し訳ありません」プロンプトボックスを削除


お久しぶりです.最近、ブログ主はずっと駅を建てることに忙しくて、しばらくブログを更新していないこともあります.申し訳ありません.同时に、友达が私のメインステーションを访问することを望んで、コレクションをプラスするのはもっと良くて、ははは!Androidシステムを使ったり使ったりしたことのある携帯電話の多くの友人は、自分がプログラムを遊んでいて、突然画面が暗くなったりして、ダイアログボックスが表示され、申し訳ありませんが、アプリケーションが停止しています.これは、プログラムがクラッシュしたことを意味します.ユーザーが唯一しなければならないのは、次にこのプログラムを再実行したり、他のことをしたりすることです.個人的には前者が大多数を占めていると推測します.もちろん、丈夫なプログラムは一般的には起こりませんが、ユーザーに責任を負う開発者として、ユーザーのことを常に考えなければなりません.これが今日お話しする話題です.オプティマイザがクラッシュしたときのユーザー体験です.私たちの目標は、プログラムに異常が発生した後、異常処理プロセスをカスタマイズし、自動的にプログラムを再起動することです.複雑そうに見えますが、実は簡単です.コアはApplicationという単例の継承にある.まず、アプリケーションにクラスを書き、Applicationを継承し、AndroidManifest.xmlに登録され、登録されたコードは次の例になります.

    ......


その中で、私がApplicationを継承したクラスは【パッケージ名】です.environment.BaseApplication. 皆さんは自分のプロジェクトの必要に応じて手配することができます.ここに登録することを忘れないでください.その後、アプリケーションでキャプチャされていない異常を処理します.BaseApplicationでは、UncaughtExceptionメソッドを複写するUncaughtExceptionHandlerインタフェースを実装するCrashHandlerというサブクラスを作成します.この方法では,対応するクラッシュ処理を行う.ここではプログラムを再起動する必要があるので、このサブクラスは次のコードセグメントに示す内容に書くことができます.
//     
class CrashHandler implements UncaughtExceptionHandler {

    @Override
    public void uncaughtException(Thread thread, final Throwable ex) {
        ex.printStackTrace();
        Intent restartIntent = new Intent(BaseApplication.this, SplashScreen.class);
        restartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(restartIntent);
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

ここで注意したいのは、IntentオブジェクトのFlagにはFLAG_が含まれている必要があります.ACTIVITY_NEW_TASK. 最後に、複写のonCreateメソッドで、例外処理のメソッドを指定します.
Thread.setDefaultUncaughtExceptionHandler(crashHandler);

ここで、crashHandlerはCrashHandlerのオブジェクトです.これで、私たちのプログラムはクラッシュが発生したときに「申し訳ありません...」のダイアログが表示され、代わりに自動再起動が表示されます.もちろん、これはただの根本的な方法であり、本当の解決策は依然として崩壊の位置を見つけ、このBugを除去しなければならない.最後に、Applicationについてはあまりお話ししませんが、もし皆さんがよく知らないなら、この兄弟の文章を見てみると、大いに啓発されます.http://blog.csdn.net/pi9nc/article/details/11200969