在我的应用程序中,有一定数量的图像需要缓存。我需要缓存的顶部大约有 12 - 15 张图像。我所做的是将图像存储在设备目录中的文件中,就像这样。
FileOutputStream o = new FileOutputStream(getFilesDir().getAbsolutePath()
+ "/background.txt");
Bitmap b = getBitmapFromURL("http://10.84.4.2:8083/images/General/background.png");
b.compress(Bitmap.CompressFormat.PNG, 90, o);
然后像这样在需要时重新加载图像
BitmapDrawable bg = new BitmapDrawable(BitmapFactory.decodeFile(c
.getFilesDir().getAbsolutePath() + "/background.txt"));
我像这样使用异步任务一次下载所有图像
public class DownloadImagesTask extends AsyncTask<String, String, Bitmap>
{
Bitmap bmp;
String name;
@Override
protected Bitmap doInBackground(String... urls)
{
name = urls[1];
return download_Image(urls[0]);
}
@Override
protected void onPostExecute(Bitmap result)
{
try
{
FileOutputStream o = new FileOutputStream(getFilesDir()
.getAbsolutePath() + name);
result.compress(Bitmap.CompressFormat.PNG, 90, o);
} catch (Exception e)
{
e.printStackTrace();
}
}
private Bitmap download_Image(String url)
{
return bmp = getBitmapFromURL(url);
}
}
我的问题是,这是一种不好的做法吗?我试图找到关于在线缓存的好教程,但发现很难找到一个完整的教程来正确解释它。我使用的方法看起来很简单,但不确定是否推荐。
如果有人能告诉我这样做的优缺点是什么,我是否应该考虑改用另一种方法,我将不胜感激。
谢谢