我了解 UncaughtExceptionHandler 在 MainThread 上运行以处理所有未处理的异常。我正在尝试将可抛出和线程信息写入文件,但我只能在主线程上执行此操作。我担心这样做可能会在 android 上引发 ANR,因为 IO 操作相对耗时且操作成本高。
执行未捕获的异常处理程序时主线程可以等待的最大时间限制是多少?
我了解 UncaughtExceptionHandler 在 MainThread 上运行以处理所有未处理的异常。我正在尝试将可抛出和线程信息写入文件,但我只能在主线程上执行此操作。我担心这样做可能会在 android 上引发 ANR,因为 IO 操作相对耗时且操作成本高。
执行未捕获的异常处理程序时主线程可以等待的最大时间限制是多少?
标准 ANR 超时为5 秒。如果超过该值,用户将获得 ANR 对话框。那个时候你应该可以写一个小文件,但不能保证。
如果您认为您的写入可能需要更长的时间,请考虑将异常序列化为 Bundle 并将其发送到在单独进程中运行的 IntentService,以便它可以在不阻塞主进程的主线程的情况下完成其工作。(这很好用,我已经做到了。)