La actividad principal de mi aplicación es Activity
que contiene un Webview
para cargar páginas web.¿Cómo controlar el uso de la memoria al llamar a múltiples WebView en Android?
Anulo el método shouldOverrideUrlLoading(WebView view, String url)
para hacer que cada solicitud de URL invoque un Intent
y cargue en una nueva actividad que contenga WebView
.
Hacer esto es para proporcionar una mejor experiencia cuando se presiona la tecla ATRÁS, simplemente finalizará la actividad actual y volverá a la actividad anterior, no necesita tiempo para volver a comparar la página para usar goBack() en una sola vista web.
Pero ahora el problema es que, después de abrir muchas URL, crear una larga cola de actividades en segundo plano, la memoria que utiliza se hizo grande.
Cuando vuelvo al iniciador y compruebo los progresos, puedo ver que mi aplicación almacena en caché más de 200M de datos. Esto no es aceptable ...
Y es interesante que puedo ver que mi aplicación se usó en mi memoria, pero en la vista Heap de DDMS en Eclipse puedo ver que la aplicación asignó no más de 10M de memoria. ¿Entonces supongo que el 200M es webStorage
guardado en caché por Webview
?
¿Hay alguna forma de controlar la memoria?
Estoy considerando solo guardar tal vez 5 capas de actividades a la vez y cuando retroceda 5 veces simplemente regrese a la página de inicio. Pero todavía no sé cómo liberar memoria junto a las 5 actividades que necesito, que nunca volveré a usar.
O si es porque el WebView
mantiene la página web en caché automáticamente, ¿cómo puedo gestionar esto manualmente? ¿Como establecer un límite de tamaño máximo de caché o recuento de páginas?
Para mí, esta es una solución brutal para ganar velocidad ... Anular la forma en que funciona el botón Atrás y pasar a otra actividad con la página para mí realmente no es una solución. Debería tratar de optimizar la página para cargarla más rápido, pero usando imágenes comprimidas, comprimidas, etc. Probablemente haya otros métodos y configuraciones de WebView a los que pueda llamar para tratar de acelerar las cosas. –