1
0

More than 1 year has passed since last update.

[Coil]キャッシュサイズを変更する方法

Last updated at Posted at 2021-09-14

Androidの画像ローディングライブラリCoilでディスクキャッシュのサイズを変更する方法を調べたのでメモがてら記事にします。

方法

CoilはOkHttpのディスクキャッシュ機構を利用しています。
したがって、キャッシュのサイズを変更するにはOkHttpClientを置き換えます。

Coil.kt
val cache = Cache(
    directory = File(context.cacheDir, "image_cache"),
    maxSize = 500L * 1024L * 1024L // 500 MB
)
val imageLoader = ImageLoader.Builder(context)
    .okHttpClient {
        OkHttpClient.Builder()
            .cache(cache)
            .build()
    }
    .build()

アプリ内で共通のキャッシュ(ImageLoader)を利用したい場合は、ApplicationクラスでCoil.setImageLoader()メソッドを利用してImageLoaderをセットします。

MyApp.kt
class MyApp : Application() {
    override fun onCreate() {
        val cache = Cache(
            directory = File(cacheDir, "image_cache"),
            maxSize = 500L * 1024L * 1024L
        )
        val imageLoader = ImageLoader.Builder(applicationContext)
            .okHttpClient {
                OkHttpClient.Builder()
                    .cache(cache)
                    .build()
            }
            .build()
        Coil.setImageLoader(imageLoader)
    }
}

キャッシュを削除する場合は、Cache.delete()Cache.evictAll()メソッドを利用します。
CacheインスタンスはDIなどを用いてシングルトンとして扱うのが良いと思います。

MyRepository.kt

class MyRepository @Inject constructor(
    private val cache: Cache,
) {
    fun deleteCache() {
        cache.evictAll()
    }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0