我目前有一個ListView與自定義適配器,它可以異步獲取描述行內容的信息。每行的一部分是一個圖像URL,我打算異步下載並顯示。ListView異步圖像加載策略
我目前的計劃爲戰略,以下載這些圖片是:
- 保持軟引用的高速緩存下載的位圖對象。
- 當調用getView()並且位圖位於緩存中時,直接設置ImageView的位圖。
- 如果位圖不在緩存中,請在下載完成後將其加載到單獨的線程中,然後將其添加到緩存並在適配器上調用notifyDataSetChanged()。
我還計劃殺死時,活動對象擁有ListView的的onDestroy()未處理的下載 - (甚至在的onPause()或可能 - 法)方法被調用,但最重要的是我要殺死下載當行離開屏幕時,待處理圖像的狀態。我可能實際上只是在短暫的延遲後取消下載,所以如果行再次快速出現在屏幕上,它可以在不浪費帶寬的情況下恢復。
我,不過,我不確定的幾件事:
- 什麼是當行熄滅屏幕,所以我可以取消下載,以檢測的最佳方式?
- 調用notifyDataSetChanged()是下載完成後還是有更好的方法?
對整個策略的任何意見,將不勝感激。
我想到的一個角落案例是,一排可能會離開屏幕,永遠不會被重用。然後,我永遠不會有機會取消下載。 – JPvdMerwe
相當不可能。這些視圖被ListView非常嚴格地重用......它可能只是「稍微偏離屏幕」(視圖在屏幕後移動1像素時不會立即重用),但這實際上可能會使您獲得「short延遲「行爲是免費的。 –