#Glideは同じURLからの読み込みだとキャッシュを利用する
Glideのキャッシュ機能は読み込み回数を減らせて便利です。
しかしサーバーのデータを更新してもURLが同じなら、キャッシュから読み込んじゃうので、更新したデータが反映されずに困ることがあります。
以下に回避方法を2種類記載します。
##回避策1:キャッシュからの読み込みをスキップする
Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.NONE) //ディスクキャッシュをスキップ
.skipMemoryCache(true) //メモリキャッシュをスキップ
.into(view)
この方法でキャッシュをスキップして更新されたデータを読み込むことはできます。
しかし元々保存されているキャッシュが更新されるわけではないので、毎回キャッシュをスキップしないと古いデータが表示されてしまします。
##回避策2:キャッシュを全削除する
//ディスクキャッシュをクリア
//バックグラウンドスレッドで実行する必要がある
Glide.get(applicationContext).clearDiskCache()
まずはディスクキャッシュを削除します。
これはバックグラウンドスレッドで実行しないとエラーになります。
//メモリキャッシュをクリア
//メインスレッド で実行する必要がある
Glide.get(applicationContext).clearMemory()
メモリキャッシュを削除します。
これはメインスレッドで実行しないとエラーになります。
スレッドが別れててややこしいですが、私はキャッシュの削除で思い通りの動作が実現しました。