具有自定义拦截器的Android Picasso在应用的初始启动时不使用缓存

时间:2019-06-27 11:17:18

标签: android picasso

我正在使用自定义拦截器将数据发布到API:

class PicassoInterceptor(
    private val id: String
) : Interceptor {

    @Throws(IOException::class)
    override fun intercept(chain: Interceptor.Chain): Response {
        val requestBody = FormBody.Builder()
            .add("id", id)
            .build()

        val original = chain.request()
        val requestBuilder = original.newBuilder()
            .header("Cache-Control", "max-age=" + (60 * 60 * 24 * 365))
            .post(requestBody)
        return chain.proceed(requestBuilder.build())
    }
}

我从活动A开始,然后转到活动B,在其中加载图像。在onCreate的活动B中,我将启动Picasso Builder。

val okHttpClient = OkHttpClient.Builder()
                .cache(Cache(cacheDir, Integer.MAX_VALUE.toLong()))
                .addInterceptor(
                    PicassoInterceptor(access_token)
                )
                .build()
            val downloader = OkHttp3Downloader(okHttpClient)
            val picasso = Picasso.Builder(this).downloader(downloader).build()

            picasso.setIndicatorsEnabled(true)
            picasso.isLoggingEnabled = true
            Picasso.setSingletonInstance(picasso)

当我启动该应用程序并从活动A转到B时,则会从网络加载图像。当我回到A,然后又回到B,图像从缓存中加载。这很酷!但是,如果我关闭应用程序并将其从ram中删除,则图像将再次从网络加载。 是否可以将图像保存到应用程序数据中?

0 个答案:

没有答案