0

在我的应用程序中,有一定数量的图像需要缓存。我需要缓存的顶部大约有 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);

    }

}

我的问题是,这是一种不好的做法吗?我试图找到关于在线缓存的好教程,但发现很难找到一个完整的教程来正确解释它。我使用的方法看起来很简单,但不确定是否推荐。

如果有人能告诉我这样做的优缺点是什么,我是否应该考虑改用另一种方法,我将不胜感激。

谢谢

4

1 回答 1

2

尝试使用来自lazyadapter 项目的 FedorVlasov 的图像加载器

于 2012-05-01T08:31:27.860 回答