我寫了一小段代碼,它從Internet下載圖像並將它們緩存到緩存目錄中。 它運行在輔助線程中。ListView在從應用程序緩存中加載時滯後
{
String hash = md5(urlString);
File f = new File(m_cacheDir, hash);
if (f.exists())
{
Drawable d = Drawable.createFromPath(f.getAbsolutePath());
return d;
}
try {
InputStream is = download(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");
if (drawable != null)
{
FileOutputStream out = new FileOutputStream(f);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
bitmap.compress(CompressFormat.JPEG, 90, out);
}
return drawable;
} catch (Throwable e) { }
return null;
}
我用這個代碼來加載ListView項內的畫面,並能正常工作。如果我刪除第一個(如果我從磁盤加載圖像),它會順利運行(並且每次都下載圖片!)。如果我保留它,當你滾動列表視圖時,你會感覺到從磁盤加載圖片時有些滯後,爲什麼?
我說,它運行在輔助線程 – user1365836
但你並不需要下載所有的圖像當u後可見視圖圖像的創造烏爾適配器對象,第一個下載廢料。 – Arnold
這正是我正在做的 – user1365836