Android Picasso с пользовательским Interceptor не использует кеш при первом запуске приложения - PullRequest
0 голосов
/ 27 июня 2019

Я использую пользовательский перехватчик для отправки данных в 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, где я загружаю изображения.В действии B в onCreate я являюсь инициатором 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, изображения загружаются из кеша.Это круто!Но если я закрою приложение и удалю его из оперативной памяти, изображения снова загрузятся из сети.Можно ли сохранить изображения в данные приложения?

...