¿Alguien ha limitado con éxito el tamaño de la caché de su WebView?

Estoy creando una aplicación de lector de noticias que, a veces, carga páginas web en un WebView .

Me di cuenta de que con el comportamiento por defecto, la memoria caché puede llegar muy poco razonable muy rápidamente. Independientemente de si Android eliminará la memoria caché cuando la memoria esté baja, no estoy de acuerdo con que mis usuarios vean una aplicación de noticias de 15 MB cuando todo excepto la caché web es de 1 MB.

Sin embargo, me encantaría usar la caché en cierta medida. Vi WebSettings # setAppCacheMaxSize () y parecía que era sólo el billete.

No parece que haga algo. He codificado lo siguiente en un método que es llamado por onCreate de mi actividad (), antes de que se cargue nada:

originalSourceWebView.getSettings().setAppCacheMaxSize(300*1024); (Yo estaba usando un valor más grande, configurable, pero lo dejó caer más bajo para confirmar mi problema).

Me golpeo a la derecha por 300KB sin fanfarria, como se muestra en la settings->applications->manage applications->click on my app . Estoy escuchando en WebChromeClient # onReachedAppMaxCacheSize para los eventos, pero que nunca parece activar.

¿Alguien ha usado esto con éxito? ¿Hay algún caché diferente que debería tratar de administrar? Los documentos parecen bastante escasos. Fui a la fuente de Android, pero sólo envía valores a código nativo, y no sé cómo ahondar en eso.

Mi entorno de prueba es un nexo en 2.2.2. Sé que necesitaré hacer las llamadas del escondrijo por la reflexión para apoyar 1.5 y 1.6, pero si no puedo hacer este trabajo, no será ninguna necesidad.

No creo que haya una API para hacer lo que quieras.

setAppCacheMaxSize limita el tamaño de caché de la API de caché de aplicaciones HTML5: el almacenamiento sin conexión que las aplicaciones de HTML 5 pueden utilizar mientras se ejecuta en WebView, pero suena como si quisiera limitar la caché utilizada para cargar páginas. Imágenes, etc.

Como una solución alternativa se podría llamar WebView.clearCache periódicamente, aunque eso realmente limita la eficacia de la caché. Si desea tratar de mantener algunas páginas recientes alrededor, podría buscar en obtenerlas de CacheManager antes de borrar el caché y luego restaurarlas después.

  • Nexus 4 aspecto de vista previa de la cámara ¿La relación siempre requiere una vista de superficie 16x9? Por qué
  • Android studio designer preview: cómo incluir el marco del dispositivo?
  • Insertando textview dentro de edittext en android?
  • WebView no mostrar el sitio web cuando está fuera de línea
  • Compruebe si url está en caché webview android
  • Android Studio (0.4.6) ocultar barra de título en vista previa?
  • Vista previa no mostrada en Android 3.0 Canary
  • Vista web de Android: borra completamente el caché
  • WebView dentro de NestedScrollView no se desplaza cuando la respuesta de contenido web tiene un elemento iframe dentro de él con la altura establecida en 100%
  • ¿Cómo desactivo mi diálogo de progreso después de cargar la vista web?
  • No hay opción "Docked Mode" en la configuración de "Preview" en Android Studio una vez desacoplada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.