qkopy / richlinkpreview

library for preview url
4 stars 2 forks source link

No proper image caching mechanism is implemented #2

Open sartajroshan opened 4 years ago

sartajroshan commented 4 years ago

No proper image caching mechanism is implemented

ajithvgiri commented 4 years ago

Glide Module

@GlideModule
class QkopyXGlideModule : AppGlideModule() {

    override fun applyOptions(context: Context, builder: GlideBuilder) {
        //use 25% of available heap size
        val cacheSize = Runtime.getRuntime().maxMemory() / 4
        builder.setMemoryCache(LruResourceCache(cacheSize.toLong()))
        builder.setDiskCache(InternalCacheDiskCacheFactory(context, cacheSize.toLong()))
        builder.setDefaultRequestOptions(requestOptions())
    }

    override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        val client: OkHttpClient = OkHttpClient.Builder()
            .readTimeout(60, TimeUnit.SECONDS)
            .connectTimeout(60, TimeUnit.SECONDS)
            .build()
        val factory = OkHttpUrlLoader.Factory(client)
        glide.registry.replace(
            GlideUrl::class.java,
            InputStream::class.java, factory
        )
    }

    companion object {

        var drawableCrossFadeFactory: DrawableCrossFadeFactory = Builder().setCrossFadeEnabled(true).build()

        private fun requestOptions(): RequestOptions {
            return RequestOptions()
                .signature(ObjectKey(System.currentTimeMillis() / (24 * 60 * 60 * 1000)))
                .override( Target.SIZE_ORIGINAL)
                .encodeFormat(Bitmap.CompressFormat.JPEG)
                .encodeQuality(100)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .format(DecodeFormat.PREFER_ARGB_8888)
                .skipMemoryCache(false)
        }
    }
}