Android/Java:并行处理 UncaughtExceptionHandler 和 Bugsnag?
Android/Java: UncaughtExceptionHandler and Bugsnag in parallel?
我正在使用 Bugsnag 进行 自动错误报告 并希望在应用程序出现时执行一些额外的操作,例如重新启动崩溃。
问题:两者都是单独工作,但没有合并。只要我添加 MyUncaughtExceptionHandler
,Bugsnag 就会停止报告。
应用程序
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 的方法。
我正在使用 Bugsnag 进行 自动错误报告 并希望在应用程序出现时执行一些额外的操作,例如重新启动崩溃。
问题:两者都是单独工作,但没有合并。只要我添加 MyUncaughtExceptionHandler
,Bugsnag 就会停止报告。
应用程序
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 的方法。