如何处理未捕获的异常,然后将处理委托回系统?

olu*_*olu 5 android

我想为我的应用程序中的每个未捕获的异常发送 Firebase 崩溃报告,但我也希望 Android 系统显示“应用程序已停止响应”对话框。我该怎么办?我已经有一个发送 firebase 崩溃报告的 UncaughtException 处理程序。我现在的问题是让 Android 处理剩下的过程。

Nab*_*ari 3

通过存储旧的异常处理程序并将未捕获的异常传递给它,可以将未捕获的异常委托回系统。

首先创建一个Application类如下:

public class Controller extends Application {

    private static Thread.UncaughtExceptionHandler defaultHandler;

    @Override
    public void onCreate() {
        super.onCreate();
        if (defaultHandler == null) {
            defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
        }
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                FirebaseCrash.report(e); //or whatever
                defaultHandler.uncaughtException(t, e); //this will show crash dialog.
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

然后在清单中使用此类作为应用程序,如下所示:

<application
    android:name=".Controller"
    ... />
Run Code Online (Sandbox Code Playgroud)