Я хочу установить глобального обработчика необработанных исключений для всех потоков в моем приложении Android. Так, в моем Application
разделите на подклассы я установил реализацию Thread.UncaughtExceptionHandler
как обработчик по умолчанию для неперехваченных исключений.
Thread.setDefaultUncaughtExceptionHandler(
new DefaultExceptionHandler(this));
В моей реализации я пытаюсь отобразиться AlertDialog
отображение соответствующего сообщения об исключении.
Однако это, кажется, не работает. Каждый раз, когда, исключение выдается для любого потока, который идет необработанный, я получаю запас, диалоговое окно по умолчанию ОС ("Извините! Диалоговое окно-Application-has-stopped-unexpectedly").
Каков корректный и идеальный способ установить обработчик по умолчанию для неперехваченных исключений?
Это все, что вам нужно сделать. (Убедитесь, что вы остановили процесс позже - все может быть в неопределенном состоянии.)
Первое, что нужно проверить, - это все еще вызывается обработчик Android. Возможно, ваша версия вызывается, но завершается неудачно, и system_server показывает общий диалог, когда видит сбой процесса.
Добавьте несколько сообщений журнала вверху обработчика, чтобы увидеть, попадает ли он туда. Распечатайте результат getDefaultUncaughtExceptionHandler, а затем выбросьте неперехваченное исключение, чтобы вызвать сбой. Следите за выводом logcat, чтобы узнать, что происходит.
Я думаю, чтобы отключить это в вашем методе uncaughtException(), не вызывающий previousHandler.uncaughtException(), где previousHandler установлен
previousHandler = Thread.getDefaultUncaughtExceptionHandler();