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 に答える