未知错误"线程在运行时关闭期间启动"

时间:2017-08-09 07:24:34

标签: android multithreading crashlytics fabric.io

我使用Fabric为我的应用报告崩溃。 我已经收到了很长时间的报告,崩溃次数不断增加。

Fatal Exception: java.lang.InternalError: Thread starting during runtime shutdown
   at java.lang.Thread.nativeCreate(Thread.java)
   at java.lang.Thread.start(Thread.java:730)
   at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:941)
   at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:1009)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1151)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
   at java.lang.Thread.run(Thread.java:761)

此报告附有62个帖子的列表,如果你们想要,我可以在这里发帖。

我不知道代码的哪一部分会导致此错误或如何复制错误。所以我希望你能引导我找到并解决这个案例。

2 个答案:

答案 0 :(得分:2)

当前线程启动太晚,也就是说,当您在UncaughtExceptionHandler中收到未捕获的异常时,将启动子线程来上载错误日志。 上载错误日志时会创建HttpClient,但在创建时将ThreadSafeClientConnManager设置为管理连接。

通过查看ThreadSafeClientConnManager的源代码,发现ThreadSafeClientConnManager也打开了子线程,这导致在子线程中打开子线程的问题,这将在执行完成后在线程中导致uncaughtException()。启动后,java.lang.InternalError:运行时关闭期间启动的线程将被抛出。

此问题的解决方案是:预先创建HttpClient,因为HttpClient的创建也会启动线程,避免在uncaughtException()中创建,从而避免了在线程中启动线程的问题。

替代解决方案:万一它试图创建线程,请从代码中删除UncaughtExceptionHandler。

答案 1 :(得分:1)

我有同样的问题......

我更新了面料插件,然后更新了twitter sdk ..

然后清理我的项目并重建apk ..我的错误已经消失。

某些ANR发生时发生此错误。