web-dev-qa-db-ja.com

Android-すべてのスレッドの一時停止にかかった時間:* ms

アプリケーションを離れてしばらく経っても、logcatにこれらの警告が表示されます。 (しかし、殺さなかった、ただそれを残すために押し戻された。)

05-03 13:43:42.955 13047-13053/package W/art: Suspending all threads took: 7.873ms
05-03 13:44:32.458 13047-13053/package W/art: Suspending all threads took: 13.441ms
05-03 13:46:58.584 13047-13053/package W/art: Suspending all threads took: 34.462ms
05-03 13:47:00.574 13047-13053/package W/art: Suspending all threads took: 8.281ms
05-03 13:48:00.425 13047-13053/package W/art: Suspending all threads took: 25.929ms
05-03 13:48:16.019 13047-13053/package W/art: Suspending all threads took: 35.053ms
05-03 13:50:01.858 13047-13053/package W/art: Suspending all threads took: 16.160ms
05-03 13:50:17.975 13047-13053/package W/art: Suspending all threads took: 20.074ms
05-03 13:52:07.744 13047-13053/package W/art: Suspending all threads took: 19.814ms
05-03 13:53:17.668 13047-13053/package W/art: Suspending all threads took: 7.578ms
05-03 13:54:42.766 13047-13053/package W/art: Suspending all threads took: 11.316ms
05-03 13:56:19.314 13047-13053/package W/art: Suspending all threads took: 21.873ms
05-03 13:58:56.140 13047-13053/package W/art: Suspending all threads took: 7.860ms
05-03 14:00:12.084 13047-13053/package W/art: Suspending all threads took: 19.430ms

それらの数は深刻でたくさんあります。

この問題についていくつか質問がありましたが、どれも私のものと似ていませんでした。「OOMやフリーズの問題がない限り無視してください」という質問が発生する可能性がある場合は、それが発生するまで待つことができません。それ。

何が原因で、どうすればこれを防ぐことができるかを知る必要があります。

Retrofitを使用してWebサービスリクエストを実行します。また、リクエストが完了するのを待っている間にキャッシュからデータを取得/更新/削除するThreadPoolExecutor。しかし、これらのいずれもこれを引き起こしているとは思いません。

この「すべてのスレッドを一時停止する」という警告について具体的なことは何も見つからないため、この状況に関するアイデアや一般的な情報をいただければ幸いです。

10
yahya

プロセスで実行中のスレッドがあり、一時オブジェクトを割り当てているようです。ARTはガベージコレクションを行う必要があり、そのためにすべてのスレッドを一時停止します。

アプリを終了した後でも、バックグラウンドで実行されている可能性のあるものをトレースしてみてください。 Android Studioの「割り当てトラッカー」を使用して、割り当てられているオブジェクトを見つけることもできます。これにより、迷子のスレッドを追跡できる可能性があります。

4