Android - UncaughtExceptionHandler: максимальное время для завершения выполнения
Я понимаю, что UncaughtExceptionHandler работает на MainThread для обработки всех необработанных исключений. Я пытаюсь записать информацию о метании и потоке в файл, но я должен сделать это только в основном потоке. Я обеспокоен тем, что это может привести к появлению ANR на Android, поскольку операции ввода-вывода являются относительно длительными и дорогостоящими операциями.
Каков максимальный лимит времени, который основной поток может ожидать при выполнении обработчика необработанных исключений?
1 ответ
Стандартное время ожидания ANR составляет 5 секунд. Если вы превысите это, пользователь получит диалог ANR. Вы должны быть в состоянии написать небольшой файл за это время, но это не гарантия.
Если вы считаете, что ваша запись может занять больше времени, рассмотрите возможность сериализации исключения в Bundle и отправки его в IntentService, который выполняется в отдельном процессе, чтобы он мог выполнять свою работу, не блокируя основной поток основного процесса. (Это отлично работает, я сделал это.)