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