¿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.
- ¿Puedo usar el Android 4 HttpResponseCache con una aplicación basada en WebView?
- Android Web-View: Inyectar el archivo Javascript local a la página web remota
- Poner iframe en la aplicación android
- ¿No se puede reproducir el vídeo dentro de WebView mediante etiquetas iframe?
- Muxing vista previa de la cámara h264 codificado flujo elemental con MediaMuxer
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.
- Android webView shouldOverrideUrlLoading para iframes
- Cómo cambiar los dispositivos predeterminados de vista previa de diseño en Android Studio
- Cifrar el caché de WebView en Android
- ¿Cómo obtener el enlace webview iframe para iniciar el navegador?
- Versión no compatible de major.minor 52.0 al renderizar en Android Studio
- Android WebView no carga la segunda página desde la memoria caché
- Cómo mover caché webView a SD?
- La configuración LOAD_NO_CACHE de WebView aún guarda archivos en el disco?
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.
- Barra de herramientas para colapsar como Google Play Store
- Cómo hacer el espacio entre barras en bargraph usando Achartengine si cada barra es diferente color contaning diferentes valores