画像がインターネットから読み込まれ、ディスクにキャッシュされるリストビューがあります。スクロール中に、 ExecutorService を使用してバックグラウンドスレッドでディスクから画像をロードしようとしています(スクロール中に複数の画像があるため)-次のようなものです:
executorService.submit(new Runnable() {
@Override
public void run() {
// load images from the disk
// reconnect with UI thread using handler
}
}
ただし、スクロールはまったくスムーズではなく、UI スレッドがどこかでブロックされているかのように非常にぎくしゃくしています。しかし、この特定のコードにコメントすると、スクロールがスムーズになります。実装の欠陥を理解できません。
編集: バックグラウンド スレッドから UI スレッドにメッセージを渡すときに問題が発生していることがわかりました。その部分をコメントにするとスクロールがスムーズです(もちろん画像は表示されません)