2012-01-18 22 views
9

Tengo una vista web usando el almacenamiento en caché de aplicaciones. Lancé la aplicación con una conexión a la red para cargar/almacenar en caché la página. Ahora, después de desactivar el wifi (y 3g, sin conexión de red), y ejecutar la aplicación, aparece la página "Android no puede cargar la página". Curiosamente, si vuelvo a cargar la vista web, carga la página desde la memoria caché. ¿Por qué no carga esta página desde la memoria caché si no se puede conectar a la red?¿Por qué Android Webview no comprueba la caché de forma predeterminada?

Estoy usando HTML5 Application Cache con cache.manifest. Aquí está mi código para habilitar esta vista web:

webview.getSettings().setDomStorageEnabled(true); 
webview.getSettings().setAppCacheMaxSize(1024*1024*8); 
webview.getSettings().setAppCachePath("/data/data/com.my.package/cache"); 
webview.getSettings().setAllowFileAccess(true); 
webview.getSettings().setAppCacheEnabled(true); 

He intentado añadir en:

weview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 

pero no sirvió de nada.

+0

Cuando apagas el wifi y/o 3g, estás matando la instancia de la aplicación, a menos que estés comprobando activamente, no sabrá cargar desde la memoria caché porque ya se cargó desde la red, por eso cuando recargues la vista web se carga correctamente. –

+0

@JaredBurrows No entiendo lo que quiere decir, pero el flujo es el siguiente: 1. Cargue la aplicación desde la red. 1a. La página está en la memoria caché. 2. Mata a la aplicación. 3. Mata wifi (no 3g en el dispositivo) 4. Carga la aplicación. 4a. La página muestra "Android no pudo cargar la página" 5. Actualice la vista web. 5a. La página se carga correctamente desde el caché – xdumaine

+0

¿Cómo está refrescando la vista web? –

Respuesta

0

Compruebe si la URL que está solicitando no es una redirección. Si es así, la memoria caché también estará apuntando a esa redirección, y la WebView no leerá la redirección resultante de la memoria caché.

Me tomó un tiempo darme cuenta de que esto era lo que estaba sucediendo en mi caso.

Cuestiones relacionadas