アプリのクラッシュを報告するために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のスレッドのリストもあります。必要に応じて、ここに投稿できます。
コードのどの部分がこれを引き起こしているのか、またはバグを再現する方法がわかりません。ですから、このケースを見つけて解決するために私を導いていただければ幸いです。
私は同じ問題を抱えていました...
ファブリックプラグインを更新してから、TwitterSDKを更新しました。
次に、プロジェクトをクリーンアップして、apk..myエラーを再構築します。
一部のANRが発生しているときに、このエラーが発生したことがあります。
現在のスレッドの開始が遅すぎます。つまり、UncaughtExceptionHandlerでキャッチされなかった例外を受信すると、子スレッドが開始されてエラーログがアップロードされます。 HttpClientはエラーログのアップロード時に作成されますが、ThreadSafeClientConnManagerは作成時に接続を管理するように設定されています。
ThreadSafeClientConnManagerのソースコードを見ると、ThreadSafeClientConnManagerも子スレッドを開いているため、子スレッドで子スレッドを開く問題が発生し、実行完了後にスレッドでuncaughtException()が発生することがわかりました。 Java.lang.InternalError:ランタイムシャットダウン中に開始するスレッドがスローされます。
この問題の解決策は:HttpClientの作成もスレッドを開始するため、事前にHttpClientを作成し、uncaughtException()での作成を回避して、スレッドでスレッドを開始する問題を回避します。
代替ソリューション:スレッドを作成しようとした場合に備えて、コードからUncaughtExceptionHandlerを削除します。