Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

527
Vistas
establecer el tiempo de caducidad para el caché de WebView en Android

en la documentación de CachingMode de WebView , en la descripción de LOAD_DEFAULT dice:

Si el tipo de navegación no impone ningún comportamiento específico, utilice los recursos almacenados en caché cuando estén disponibles y no hayan caducado ; de lo contrario, cargue recursos de la red.

¿Cómo puedo configurar el tiempo de caducidad para el almacenamiento en caché de la vista web en el cliente de Android sin necesidad de modificar la configuración del lado del servidor?

También he revisado los siguientes enlaces útiles: link1 , link2 y link3 .

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

haga eso usando WorkManager, cree un administrador de trabajo periódico para llamar a su función 'clearWebViewCache' (como todos los días)

over 4 years ago · Santiago Trujillo Denunciar

0

¿Qué pasa con el uso de un cliente de vista web personalizado basado en OkHttp?

Pruebe esto: agregue el cliente okhttp como dependencia:

implementation 'com.squareup.okhttp3:okhttp:4.9.1'

A continuación, cree un interceptor OkHttp. En este interceptor puede definir la edad de su caché:

 import okhttp3.CacheControl import okhttp3.Interceptor import okhttp3.Response import java.util.concurrent.TimeUnit class CacheInterceptor : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val response = chain.proceed(chain.request()) val cacheControl = CacheControl.Builder() .maxAge(1, TimeUnit.MINUTES) // 1 minute cache .build() return response.newBuilder() .removeHeader("Pragma") .removeHeader("Cache-Control") .header("Cache-Control", cacheControl.toString()) .build() } }

Impleméntalo:

 ... lateinit var wb: WebView lateinit var okHttpClient: OkHttpClient lateinit var cache: Cache override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val httpCacheDirectory = File(applicationContext.cacheDir, "http-cache") val cacheSize = 10 * 1024 * 1024 // 10 MiB val cache = Cache(httpCacheDirectory, cacheSize.toLong()) okHttpClient = OkHttpClient.Builder() .addNetworkInterceptor(CacheInterceptor()) .cache(cache) .build() wb = findViewById(R.id.webView) wb.webViewClient = object : WebViewClient() { // API 21- @SuppressWarnings("deprecation") override fun shouldInterceptRequest( view: WebView?, url: String ): WebResourceResponse? { return this.getNewResponse(url) } // API 21+ @TargetApi(Build.VERSION_CODES.LOLLIPOP) override fun shouldInterceptRequest( view: WebView?, request: WebResourceRequest ): WebResourceResponse? { return getNewResponse(request.url.toString()) } private fun getNewResponse(url: String): WebResourceResponse? { return try { val okHttpRequest: Request = Request.Builder().url(url).build() val response: Response = okHttpClient.newCall(okHttpRequest).execute() WebResourceResponse("", "", response.body!!.byteStream()) } catch (e: IOException) { e.printStackTrace() null } } } } ...
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda