10

アプリケーションを離れてからしばらく経っても、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 。ただし、これらのいずれかがこれを引き起こしているとは思いません。

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

4

2 に答える 2

4

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

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

于 2016-06-04T22:25:57.737 に答える