我写了一小段代码,从互联网上下载图像并将它们缓存到缓存目录中。 它在辅助线程中运行。
{
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 项中加载图片,它工作正常。如果我删除第一个 if(我从磁盘加载图像)它运行顺利(并且每次都下载图片!)。如果我保留它,当您滚动列表视图时,您会在从磁盘加载图片时感觉有些滞后,为什么?