Android - UncaughtExceptionHandler: максимальное время для завершения выполнения

Я понимаю, что UncaughtExceptionHandler работает на MainThread для обработки всех необработанных исключений. Я пытаюсь записать информацию о метании и потоке в файл, но я должен сделать это только в основном потоке. Я обеспокоен тем, что это может привести к появлению ANR на Android, поскольку операции ввода-вывода являются относительно длительными и дорогостоящими операциями.

Каков максимальный лимит времени, который основной поток может ожидать при выполнении обработчика необработанных исключений?

1 ответ

Стандартное время ожидания ANR составляет 5 секунд. Если вы превысите это, пользователь получит диалог ANR. Вы должны быть в состоянии написать небольшой файл за это время, но это не гарантия.

Если вы считаете, что ваша запись может занять больше времени, рассмотрите возможность сериализации исключения в Bundle и отправки его в IntentService, который выполняется в отдельном процессе, чтобы он мог выполнять свою работу, не блокируя основной поток основного процесса. (Это отлично работает, я сделал это.)

Другие вопросы по тегам