1

Android の画像キャッシュ ライブラリを picasso から fresco に移行しています。ピカソのように既存の画像を置き換える機能を追加しているため、既にキャッチされた画像を無効にする方法があるかどうかを知りたい

Picasso.with(context).invalidate(URI);

この行は、キャッシュされた画像を削除し、同じような提供された URL を使用して新しい画像を使用します。

http://example.com/image_path

フレスコで私は使ってみました

Fresco.getImagePipeline().evictFromMemoryCache(uri);

これはビューから画像を削除していますが、同じ古いキャッシュされた画像を再度追加し、ピカソで動作しているためネットワークから新しい画像を取得していません。


ピカソのキャッシュを無効にする質問を参照してくださいピカソの場合、受け入れられた回答はうまくいきます。

4

2 に答える 2

3
Fresco.getImagePipeline().evictFromMemoryCache(uri);

上記のコード行はキャッチから画像を削除しますが、画像はディスクに残り、呼び出された場合は同じようにレンダリングします。ディスクからも同じイメージを削除する必要があります。次の 2 行は、ディスク キャッシュから画像を削除します。また、ディスク キャッシュから保存されている場合は、サムネイル画像である小さな画像を削除する必要があります。

Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(new SimpleCacheKey(uri.toString()));
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache().remove(new SimpleCacheKey(uri.toString()));

注:カスタム キャッシュ キーを使用している場合は、そのように変更する必要があります。

于 2015-05-15T10:09:22.373 に答える
1

これを試して

public static void clearCache(){
            //
            ImagePipeline imagePipeline = com.facebook.drawee.backends.pipeline.Fresco.getImagePipeline();
            imagePipeline.clearMemoryCaches();
            imagePipeline.clearDiskCaches();
            // combines above two lines
            imagePipeline.clearCaches();
        }
于 2018-09-13T18:37:52.253 に答える