Ich habe ein WebView in einer meiner Aktivitäten, und wenn es eine Webseite lädt, sammelt die Seite einige Hintergrunddaten von Facebook.Android Webview - Löschen Sie den Cache vollständig
Was ich sehe, ist, dass die in der Anwendung angezeigte Seite bei jedem Öffnen und Aktualisieren der App gleich ist.
Ich habe versucht, die WebView Cache nicht zu verwenden und löschen Sie den Cache und den Verlauf des WebView.
Ich habe folgte auch den Vorschlag hier: How to empty cache for WebView?
Aber keines dieser Werke, jemand irgendwelche Ideen von mir nicht haben kann, dieses Problem zu überwinden, weil es ein wichtiger Teil meiner Anwendung ist.
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"));
So implementiert ich den ersten Vorschlag (Obwohl der Code geändert rekursiv zu sein)
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");
}
}
}
jedoch noch nicht geändert hat, was die Seite angezeigt wird. Auf meinem Desktop-Browser erhalte ich einen anderen HTML-Code für die Web-Seite, die im WebView erstellt wurde. Daher weiß ich, dass der WebView irgendwo zwischenspeichern muss.
Auf dem IRC-Kanal wurde ich auf eine Behebung verwiesen, um das Zwischenspeichern von einer URL-Verbindung zu entfernen, kann aber nicht sehen, wie man es auf ein WebView noch anwendet.
http://www.androidsnippets.org/snippets/45/
Wenn ich es meine Anwendung und lösche neu installieren, kann ich die Webseite auf dem neuesten Stand, das heißt eine nicht-Cache-Version zurück. Das Hauptproblem ist, dass die Änderungen an den Links in der Webseite vorgenommen werden, so dass das Frontend der Webseite vollständig unverändert bleibt.
'mWebView.getSettings(). SetAppCacheEnabled (false);' Hat nicht funktioniert? – Paul