Estoy creando una aplicación de lector de noticias que, a veces, carga páginas web en un WebView
.¿Alguien ha limitado con éxito el tamaño de la memoria caché de su WebView?
Me di cuenta de que con el comportamiento predeterminado, la memoria caché puede ser muy poco razonable muy rápidamente. Ya sea que Android borre ese caché o no cuando la memoria baja, no estoy de acuerdo con que mis usuarios vean una aplicación de noticias de 15MB cuando todo, excepto el caché web, es de aproximadamente 1MB.
Sin embargo, me encantaría usar el caché hasta cierto punto. Vi WebSettings # setAppCacheMaxSize() y parecía que era solo el ticket.
Parece que no hace nada. Codifiqué lo siguiente en un método invocado por onCreate() de mi actividad antes de que se cargue algo:
originalSourceWebView.getSettings().setAppCacheMaxSize(300*1024);
(Estaba usando un valor configurable más grande, pero lo dejé caer para confirmar mi problema).
Soplo justo por 300KB sin ninguna fanfarria, como se muestra en settings->applications->manage applications->click on my app
. Estoy escuchando en WebChromeClient # onReachedAppMaxCacheSize para eventos, pero parece que nunca se dispara.
¿Alguien ha utilizado esto con éxito? ¿Hay algún caché diferente que debería tratar de administrar? Los documentos parecen bastante escasos. Ingresé a la fuente de Android pero solo envía valores al código nativo, y no sé cómo profundizar en eso.
Mi entorno de prueba es un nexo uno en 2.2.2. Sé que tendré que hacer las llamadas de caché por reflexión para soportar 1.5 y 1.6, pero si no puedo hacer esto, no habrá necesidad.
Lo he intentado, porque tenía curiosidad. Probé ese método, pasando 1024 y luego 1, y nunca parece descartar el evento, nunca se llama aReachedAppMaxCacheSize. Estoy usando un Nexus 1 con 2.2.1. Puedo probar un HTC Desire y un Samsung Galaxy Tab con comentarios. – mdelolmo
He probado lo mismo en una Samsung Galaxy Tab (originalSourceWebView.getSettings(). SetAppCacheMaxSize (1);) y no tengo nada en absoluto. ¿Se supone que esto funciona? – mdelolmo