Android Webview - Complètement vider le Cache
J'ai une WebView dans un de mes Activités, et quand il charge une page web, la page rassemble quelques données de base à partir de Facebook.
Ce que je vois, cependant, est la page affichée dans le formulaire de demande est le même à chaque fois que l'application est ouverte et rafraîchie.
J'ai essayé de réglage de la WebView ne pas utiliser le cache et effacer le cache et l'historique de la WebView.
J'ai également suivi la suggestion ici: Comment vider le cache de WebView?
Mais rien de tout cela fonctionne, est-ce quelqu'un a une idée je peux surmonter ce problème, car il est une partie essentielle de ma demande.
mWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
if(progress >= 100)
{
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
}
else
{
mProgressBar.setVisibility(ProgressBar.VISIBLE);
}
}
});
mWebView.setWebViewClient(new SignInFBWebViewClient(mUIHandler));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.clearHistory();
mWebView.clearFormData();
mWebView.clearCache(true);
WebSettings webSettings = mWebView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
Time time = new Time();
time.setToNow();
mWebView.loadUrl(mSocialProxy.getSignInURL()+"?time="+time.format("%Y%m%d%H%M%S"));
J'ai donc mis en place la première suggestion (Bien changé le code récursif)
private void clearApplicationCache()
{
File dir = getCacheDir();
if(dir!= null && dir.isDirectory())
{
try
{
ArrayList<File> stack = new ArrayList<File>();
//Initialise the list
File[] children = dir.listFiles();
for(File child:children)
{
stack.add(child);
}
while(stack.size() > 0)
{
Log.v(TAG, LOG_START+"Clearing the stack - " + stack.size());
File f = stack.get(stack.size() - 1);
if(f.isDirectory() == true)
{
boolean empty = f.delete();
if(empty == false)
{
File[] files = f.listFiles();
if(files.length != 0)
{
for(File tmp:files)
{
stack.add(tmp);
}
}
}
else
{
stack.remove(stack.size() - 1);
}
}
else
{
f.delete();
stack.remove(stack.size() - 1);
}
}
}
catch(Exception e)
{
Log.e(TAG, LOG_START+"Failed to clean the cache");
}
}
}
Toutefois, cela n'a toujours pas changé ce que la page est affichée. Sur mon navigateur de bureau, je suis différente code html de la page web produite dans la WebView donc je connais la WebView doit être mise en cache quelque part.
Sur le canal IRC, j'ai été rappelé pour un correctif pour supprimer la mise en cache à partir d'une URL de Connexion, mais ne peut pas voir comment l'appliquer à une WebView encore.
http://www.androidsnippets.org/snippets/45/
Si je supprime mon application et ré-installer, je peux obtenir la page web en arrière jusqu'à ce jour, c'est à dire un non-version mise en cache. Le principal problème est que les modifications sont apportées aux liens dans la page web, de sorte que l'extrémité avant de la page web est complètement inchangé.
mWebView.getSettings().setAppCacheEnabled(false);
n'a pas fonctionné ?
Vous devez vous connecter pour publier un commentaire.
De sauvegarder l'extrait de code ci-dessus posté par Visage Lugubre contient une erreur et que si un répertoire ne parvient pas à supprimer parce que l'un de ses fichiers ne peuvent pas être supprimés, le code va essayer à nouveau dans une boucle infinie. Je l'ai réécrit pour être vraiment récursive, et ajouté un numDays paramètre de sorte que vous pouvez contrôler la façon dont les vieux les fichiers qui sont taillées:
Nous espérons que de les utiliser à d'autres personnes 🙂
getTime()
dans une variable en dehors de la boucle de sorte que vous ne pas l'appeler à chaque fois.J'ai trouvé une aussi élégante et simple solution pour effacer la mémoire cache
http://developer.android.com/reference/android/webkit/WebView.html#clearCache%28boolean%29
J'ai été à essayer de comprendre la façon d'effacer le cache, mais tout ce que nous pouvions faire à partir de l'méthodes mentionnées ci-dessus a été de supprimer les fichiers locaux, mais il ne jamais nettoyer la RAM.
L'API clearCache, libère de la RAM utilisée par le webview et, de là des mandats que la page sera de nouveau chargé.
J'ai trouvé la solution que vous recherchez:
Pour une raison quelconque Android fait un mauvais cache de l'url à laquelle il revient toujours, par accident, au lieu de les nouvelles données dont vous avez besoin. Bien sûr, vous pouvez simplement supprimer les entrées de la DB, mais dans mon cas, je suis seulement en essayant d'accéder à une URL en soufflant l'ensemble de la DB est plus facile.
Et ne vous inquiétez pas, ces DBs sont simplement associés à votre application de sorte que vous ne sont pas de vider le cache du téléphone.
Pour effacer tous les webview caches tout en vous signOUT forme de votre APPLICATION:
Pour la Sucette et ci-dessus:
Ce devrait vider votre cache des applications qui doivent être où votre webview cache est
Pour effacer l'historique, il suffit de faire:
Source: http://developer.android.com/reference/android/webkit/WebView.html
Assurez-vous que vous utilisez la méthode ci-dessous pour les données du formulaire ne s'affiche comme autopop lorsqu'il est cliqué sur les champs de saisie.
Il peut clairement compte google dans mon webview
cas d'utilisation: liste d'éléments sont à l'affichage au recycleur de vue, chaque fois qu'un élément, cliquez sur il cache recycleur de vue et montre l'affichage web avec l'élément de l'url.
problème:
j'ai le même problème dans lequel une fois que j'ouvre un
url_one
dans webview , puis essayez d'ouvrir un autreurl_two
dans webview, il montreurl_one
dans fond jusqu'àurl_two
est chargé.solution:
donc pour résoudre ce que j'ai fait est de charger chaîne vide
""
commeurl
juste avant de cacherurl_one
et le chargementurl_two
.de sortie: chaque fois que je charge une nouvelle url dans webview il ne montre pas de toute autre page web en arrière-plan.
code