Как ACRA отлавливает все исключения приложения?
Знаете ли вы, как ACRA - платформа отчетности Android Crash - работает под капотом?
Как это ловит ловить исключения и ошибки? Использует ли он какой-то глобальный блок try/catch для обнаружения ошибок?
И влияет ли это на производительность и срок службы батареи?
1 ответ
ACRA работает, устанавливая обработчик исключений по умолчанию в главном потоке. Вы можете увидеть это в исходном коде здесь:
mDfltExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
На этом этапе он устанавливает себя как обработчик исключений по умолчанию. Java вызовет этот обработчик, если будут какие-либо исключения, которые никогда не будут перехвачены try/catch
блок.
Поскольку на самом деле это не активный демон или процесс, а скорее часть вашего кода (при условии, что вы вызываете ACRA.init()
), это на самом деле не влияет на производительность или срок службы батареи.