Android/Java:并行处理 UncaughtExceptionHandler 和 Bugsnag?

Android/Java: UncaughtExceptionHandler and Bugsnag in parallel?

我正在使用 Bugsnag 进行 自动错误报告 并希望在应用程序出现时执行一些额外的操作,例如重新启动崩溃。

问题:两者都是单独工作,但没有合并。只要我添加 MyUncaughtExceptionHandlerBugsnag 就会停止报告。

应用程序

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        Bugsnag.init(this);

        // "Breaks" Bugsnag:
        Thread.setDefaultUncaughtExceptionHandler(
            new MyUncaughtExceptionHandler(this, MainActivity.class));
    }
}

MyUncaughtExceptionHandler

public class MyUncaughtExceptionHandler implements
    java.lang.Thread.UncaughtExceptionHandler {

    private final Context mContext;
    private final Class<?> mActivityClass;

    public MyUncaughtExceptionHandler(Context context, Class<?> c) {
        mContext = context;
        mActivityClass = c;
    }

    public void uncaughtException(Thread thread, Throwable exception) {
        Bugsnag.notify(exception);
        Intent intent = new Intent(mContext, mActivityClass);
        mContext.startActivity(intent); // restarts the app

        Process.killProcess(Process.myPid());
        System.exit(0);
    }
}

我已经尝试在 MyUncaughtExceptionHandler 内致电 Bugsnag.notify(exception)

有什么想法吗?提前致谢!

我在这里发现了你的 post,但如果你想要有保证的回复,请务必通过 Bugsnag 支持与我们联系。

问题是,当您调用 Thread.setUncaughtExceptionHandler 时,您正在删除 Bugsnag 在此处设置的处理程序: https://github.com/bugsnag/bugsnag-android/blob/2308eb6c706f66495dea116acf619f695530dff4/sdk/src/main/java/com/bugsnag/android/ExceptionHandler.java#L31

您需要调用原始处理程序才能让 Bugsnag 检测到任何内容。

请注意,我们通常不会在 Android 应用程序中推荐终止进程并启动新 Intent 的方法。