你知道ACRA(Android Crash报告框架)是如何工作的吗?
它如何挂钩以捕获异常和错误?它是否使用一些全局 try/catch 块来检测错误?
这样做会影响性能和电池寿命吗?
ACRA 通过在主线程上设置默认异常处理程序来工作。您可以在下面的源代码中看到这一点:
mDfltExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
此时,它将自己设置为默认的未捕获异常处理程序。如果抛出的任何异常从未被任何try/catch
块捕获,Java 将调用此处理程序。
由于它实际上不是一个活跃的守护进程或进程,而是代码的一部分(假设您调用ACRA.init()
),因此它实际上根本不影响性能或电池寿命。