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

Huy*_*Huy 10 multithreading android 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)
Run Code Online (Sandbox Code Playgroud)

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

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

Whi*_*ear 5

当前线程启动得太晚,即当你在UncaughtExceptionHandler中收到未捕获的异常时,就启动一个子线程来上传错误日志。HttpClient是在上传错误日志时创建的,但ThreadSafeClientConnManager在创建时被设置为管理连接。

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

这个问题的解决办法是:提前创建HttpClient,因为HttpClient创建时也会启动线程,避免在uncaughtException()中创建,从而避免了线程中启动线程的问题。

替代解决方案:从代码中删除 UncaughtExceptionHandler,以防它尝试创建线程。


Nai*_*lah 3

我遇到过同样的问题...

我已经更新了fabric插件,然后更新了twitter sdk..

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

有时会发生此错误,同时发生一些 ANR。