AndroidのRecyclerViewのビューホールダーを使用して、1つのスレッドでスレッドプールを使用しています。 スクロールが遅い場合は動作しています。しかし、私が高速にスクロールしていると、あまりにも多くのタスクがキューにプッシュされます。これは、デバッグによって発見したキューが完全にブロックされています。ExecutorService実行中のリクエストが多すぎると、1つのスレッドスレッドプールがキューをブロックしています
私は、コードを簡略化している(多くの)私は、ねじ1を使用していますどこスレッドプール:
if (executorService == null) {
executorService = Executors.newFixedThreadPool(1);
}
executorService.execute(new Runnable() {
@Override
public void run() {
RessourceService.getCoverPage(url, callback);
while (waiting) {}
}
});
私がブロックされたキューを得ることなく順次ネットワークタスクを実行したいのであれば、代替何です?
ご協力いただきますようお願い申し上げます。
更新: 問題は私のコードのどこかにあり、上記のものではありませんでした。私の質問に記載されているように、私は、リサイクルビューのビューアを使ってリクエストを実行しています。高速にスクロールすると、画像はロードされません。私は、問題がリサイクル・ビューで見えなくなったときに問題が発生していることを知りました。この理由は、「待機中」変数が真であるために要求がロックされたためです。私はそれを静的にし、各要求の直前にそれをfalseに設定し、それによって進行中の要求を別のビューホルダーで停止することで解決できます。 それにもかかわらず、newSingleThreadExecutorの使用に関する@Jessie Brian Revilの示唆は完全に理にかなっています。私の問題に直接的な解決策ではなく、上記のコードに対する合理的な解決策です(したがって、受け入れます)。
ありがとうございました!問題は私のコードのどこかにありましたが、あなたの答えは依然として参考になりました。私の質問の編集を見てください。 – Langkiller