Crashlytics Android SDK – пользовательский UncaughtExceptionHandler

Можно ли включить в одно приложение пользовательский UncaughtExceptionHandler вместе с crashlytics? Если да – как?

Вы можете установить свой пользовательский UncaughtExceptionHandler, указав, что он будет передавать исключение по умолчанию UncaughtExceptionHandler, которое будет обработано позже через Crashlytics.

Ниже код реализован внутри подкласса Application:

private static Thread.UncaughtExceptionHandler mDefaultUEH; private static Thread.UncaughtExceptionHandler mCaughtExceptionHandler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { // Custom logic goes here // This will make Crashlytics do its job mDefaultUEH.uncaughtException(thread, ex); } }; @Override public void onCreate() { super.onCreate(); // Order is important! // First, start Crashlytics Crashlytics.start(this); // Second, set custom UncaughtExceptionHandler mDefaultUEH = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(mCaughtExceptionHandler); } 

Второй вариант – зарегистрировать Crashlytics после установки вашего пользовательского UncaughtExceptionHandler – тогда все неперехваченные исключения будут сообщаться Crashlytics как смертельные, и после этого передаются вашему пользовательскому обработчику.

Да, это возможно.

В вашем классе Application:

 @Override public void onCreate() { super.onCreate(); Crashlytics.start(this); initUncaughtExceptionHandler(); } private void initUncaughtExceptionHandler() { final ScheduledThreadPoolExecutor c = new ScheduledThreadPoolExecutor(1); c.schedule(new Runnable() { @Override public void run() { final UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread paramThread, Throwable paramThrowable) { // do my amazing stuff here System.err.println("Error!"); //then pass the job to the previous handler defaultHandler.uncaughtException(paramThread, paramThrowable); } }); } }, 5, TimeUnit.SECONDS); } 

Причина, по которой я планирую это через 5 секунд, состоит в том, что Crashlytics нужно некоторое время, чтобы настроить свои вещи. Я использую этот код, и он отлично работает. Конечно, если ваше приложение аварийно завершает работу, извините, но не пользовательский обработчик;)

Нет, если бы эти решения работали для меня. Я сделал это следующим образом:

 // Setup handler for uncaught exceptions. Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException (Thread thread, Throwable e) { //Send Report to Crashlytics. Crashlytics will send it as soon as it starts to work Crashlytics.logException(e); //Your custom codes to Restart the app or handle this crash HandleCrashes(thread, e); } }); 

И вот мой пользовательский метод для перезапуска APP:

 private void HandleCrashes(Thread t, Throwable e) { Intent i = new Intent(mContext, frmLogin.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("JustLogin", true); startActivity(i); System.exit(1); } 
Intereting Posts
Отключить просмотр списка прокрутки на samsung android ANDROID: анализ XML «Launchimage» для моего приложения trigger.io слишком мал на Galaxy Nexus Является ли использование Serializable в Android плохим? Несколько файлов dex определяют Lcom / google / ads / AdRequest $ Файлы ErrorCode и Multix dex определяют Lcom / google / ads / AdRequest $ ErrorCode Библиотека LinkedIn OAuth не может разрешить доступ к учетной записи LinkedIn Что такое новый сгенерированный код «Это было автоматически создано для реализации API индексирования приложений»? Программно нажмите на просмотр в андроиде Учебник / ссылка на запуск ACTION_EDIT с изображением и обратным изображением Есть ли способ изменить цвет панели состояния Android с помощью React Native? Я не могу понять, как добавить библиотеку Downloader и библиотеку лицензирования в Android Studio Время автономной работы батареи, 2G / 3G Использование в Android Есть ли эквивалент «текст клавиатуры ввода для adb shell» для iOS? Android – Как сделать не-отладочный файл .apk? Mono для Android: где GCMBaseIntentService?