6

私は次の方法を使用しています

Bitmap bitmap = Picasso.with(ListofCardsActivity.this)
                            .load(overLayUrl).get();

をダウンロードして、Web URL から画像を取得します。

このメソッドは、既にダウンロードされている場合でも、毎回 URL から画像をダウンロードしますか?

私が望むのは、画像がダウンロードされたら、次回以降はキャッシュから画像を取得する必要があることです。ダウンロードする必要はありません。

上記の要件のような方法がある場合。私にお知らせください

4

2 に答える 2

0

このメソッドは、既にダウンロードされている場合でも、毎回 URL から画像をダウンロードしますか? キャッシュされている場合ではありません。

ドキュメントとソース コードによると、同期get()メソッドを使用する場合、Picasso は何もキャッシュしません。

したがって、画像を同期的に読み込み、Picasso でキャッシュするための私のソリューションは次のとおりです。

    File fileImage = new File("/path/to/your/image");

    final Bitmap[] bmpRes = new Bitmap[1];
    final Semaphore semaphore = new Semaphore(0);
    Picasso.with(this).load(fileImage).priority(Picasso.Priority.HIGH).into(new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            bmpRes[0] = bitmap;
            semaphore.release();
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
            semaphore.release();
        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {

        }
    });
    try {
        semaphore.acquire();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    if(bmpRes[0] != null) {
        Bitmap bmp = bmpRes[0];
        //TODO: Whatever you want with the bitmap
    } else {
        //TODO: Failed to load the image
    }
于 2015-11-27T11:57:24.257 に答える