Как ACRA отлавливает все исключения приложения?

Знаете ли вы, как ACRA - платформа отчетности Android Crash - работает под капотом?

Как это ловит ловить исключения и ошибки? Использует ли он какой-то глобальный блок try/catch для обнаружения ошибок?

И влияет ли это на производительность и срок службы батареи?

1 ответ

Решение

ACRA работает, устанавливая обработчик исключений по умолчанию в главном потоке. Вы можете увидеть это в исходном коде здесь:

   mDfltExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
   Thread.setDefaultUncaughtExceptionHandler(this);

На этом этапе он устанавливает себя как обработчик исключений по умолчанию. Java вызовет этот обработчик, если будут какие-либо исключения, которые никогда не будут перехвачены try/catch блок.

Поскольку на самом деле это не активный демон или процесс, а скорее часть вашего кода (при условии, что вы вызываете ACRA.init()), это на самом деле не влияет на производительность или срок службы батареи.

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