2011-07-01 28 views
7

Tengo un WebView en mi aplicación. Cuando el usuario cierra sesión en mi aplicación, me gustaría eliminar todos los recursos almacenados en caché que WebView pudo haber creado. En cuanto a un emulador, veo los siguientes archivos:¿Desea borrar todos los elementos en caché creados por WebView?

/data 
    /data 
    /com.example.myapp 
     /cache 
     /webviewCache 
      bunch of files here.. 
     /databases 
     webview.db 
     webviewCache.db 

¿Hay alguna llamada al sistema que pueda usar para borrar todos los elementos en/cache y/bases de datos, o debemos hacerlo manualmente? Me preocupa hacerlo manualmente solo porque no sé qué archivos nuevos puede dejar WebView en versiones futuras de Android, así que no estaré seguro de que realmente estoy despejando todo para el usuario.

+0

posible duplicado de [Webview Android - Completamente borrar la caché] (http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache) – Reno

+0

Es cierto, he visto que la respuesta, pero mi página de cierre de sesión no tiene una referencia al WebView original (vive en una actividad de diff). Por lo tanto, no tendrá acceso a mWebView.clearCache (true), etc. Las respuestas en esas preguntas también parecían elaboradas en casa, preguntándose si existe una forma "oficial" de hacerlo según las indicaciones de Google. Esperando que den una respuesta sobre esto ya que es un problema de seguridad. – user291701

+0

Duplicado, encuentre el correcto aquí - http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache – Darpan

Respuesta

16

probar esto

mWebView.clearCache(true); 
mContext.deleteDatabase("webview.db"); 
mContext.deleteDatabase("webviewCache.db"); 
+0

error de la aplicación en la versión froyo ...... –

3

Sólo publicar comentarios aquí porque puede ser feo

clearCache() funcionará porque:

Desde el doc:

Borrar la caché del recurso. Tenga en cuenta que la memoria caché es por aplicación, por lo que borrará la memoria caché para todas las vistas web utilizadas.

+0

Los cachés WebView parecen sobrevivir a través de relanzamientos de la aplicación - ¿es eso esperado? ¿Y cómo se borran los elementos almacenados en caché más antiguos que ciertos tiempos (como los anteriores a 1 día ...) – Jasper

14

¡Este es el único código que salvó mi día!

CookieSyncManager.createInstance(this);   
CookieManager cookieManager = CookieManager.getInstance();   
cookieManager.removeAllCookie(); 

Mi escenario:

  • Una vez conectado a través de Linkedin con la vista web. La vista web guarda los detalles de inicio de sesión. Necesito que mi aplicación borre esto cuando el usuario cierre sesión en la aplicación. Todos los otros enfoques no funcionaron para mí.
+0

¿Qué tienen que ver las cookies con el caché? –

+0

No ... pero esta respuesta es para aquellas aplicaciones que registran al usuario en función de la vista web y una caché clara no registra al usuario. Entonces, tenemos que borrar las cookies. Las cookies también se usan para almacenar otros datos también. Por lo tanto, también debemos borrar las cookies. @ NicolaeSurdu – amalBit

+0

La eliminación de la memoria caché no debe cerrar la sesión del usuario. Las cookies deben eliminarse mediante el mecanismo de cierre de sesión, no desde la aplicación nativa. –

Cuestiones relacionadas