1. ホーム
  2. android

[解決済み] Glideライブラリのキャッシュから画像を削除する

2023-04-14 14:40:16

質問

私は、ファイルから画像を表示するために、あるプロジェクトでGlideを使っています。

以下は、私がどのように画像を表示しているのかのコードです。

Glide.with(DemoActivity.this)
     .load(Uri.parse("file://" + imagePath))
     .into(mImage);

この場所の画像( imagePath )の画像は常に変化しています。Glideのデフォルトでは、画像は ImageView . このため、Glideはその場所に新しい画像がある場合、キャッシュから最初に表示される画像を表示していました。

もし、その位置の画像を imagePath にある画像を同じ名前の他の画像に変更すると、Glideは新しい画像ではなく、最初の画像を表示します。

2つのクエリです。

  1. キャッシュではなく、常にファイルから画像を取得することは可能でしょうか?そうすれば問題は解決します。

  2. 新しく置き換えられた画像を取得する前に、キャッシュから画像をクリアすることは可能でしょうか?これも問題解決になります。

どのように解決するのですか?

これは、私がこの問題を解決した方法です。

方法1:画像が変わるたびにURLが変わる場合

Glide.with(DemoActivity.this)
    .load(Uri.parse("file://" + imagePath))
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .skipMemoryCache(true)
    .into(mImage);

diskCacheStrategy()でディスクキャッシュを処理し、skipMemoryCache()メソッドでメモリキャッシュをスキップすることが可能です。

方法2:URLは変わらないが、画像が変わってしまう場合

URLが一定であれば、画像キャッシュにSignatureを使用する必要があります。

Glide.with(yourFragment)
     .load(yourFileDataModel)
     .signature(new StringSignature(yourVersionMetadata))
     .into(yourImageView);

Glide signature()は、キャッシュキーに追加データを混ぜる機能を提供します。

  • を使用することができます。 MediaStoreSignature は、メディアストアからコンテンツを取得する場合に使用します。 MediaStoreSignature を使うと、メディアストアアイテムの日付修正時刻、MIME タイプ、 方向をキャッシュキーに混ぜることができます。これらの 3 つの属性は、編集や更新を確実にキャッチし、メディア ストアのサムネイルをキャッシュすることができます。
  • あなたは StringSignature として保存されたコンテンツにも、ファイルの更新日時を混在させることができます。