Android/Java: UncaughtExceptionHandler и Bugsnag параллельно?
Я использую 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);
}
}
Я уже пыталась позвонить Bugsnag.notify(exception)
в MyUncaughtExceptionHandler
,
Любая идея? Заранее спасибо!
1 ответ
Я заметил ваш пост здесь, но всегда обращайтесь к нам через службу поддержки Bugsnag, если вы хотите получить гарантированный ответ.
Проблема в том, что когда вы звоните Thread.setUncaughtExceptionHandler
Вы удаляете обработчик, который Bugsnag устанавливает здесь: https://github.com/bugsnag/bugsnag-android/blob/2308eb6c706f66495dea116acf619f695530dff4/sdk/src/main/java/com/bugsnag/android/ExceptionHandler.java#L31
Вам нужно будет вызвать оригинальный обработчик, чтобы Bugsnag мог что-либо обнаружить.
Обратите внимание, что прекращение процесса и запуск нового намерения - это не тот подход, который мы бы рекомендовали в общем случае в приложении для Android.