У меня есть WebView в одном из моих действий, и когда он загружает веб-страницу, страница собирает некоторые фоновые данные из Facebook.
Что я вижу, так это то, что страница, отображаемая в приложении, одинакова при каждом открытии и обновлении приложения.
Я пытался настроить WebView так, чтобы он не использовал кеш и не очищал кеш и историю WebView.
Я также следовал предложению здесь: Как очистить кэш для WebView?
Но ничего из этого не работает, у кого-нибудь есть идеи, что я могу преодолеть эту проблему, потому что это жизненно важная часть моего приложения.
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"));
Итак, я реализовал первое предложение (хотя изменил код на рекурсивный)
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");
}
}
}
Однако это все еще не изменило то, что отображает страница. В моем браузере на рабочем столе я получаю другой HTML-код для веб-страницы, созданной в WebView, поэтому я знаю, что WebView должен где-то кэшироваться.
На IRC-канале я указал на исправление, позволяющее удалить кэширование из URL-соединения, но пока не вижу, как применить его к WebView.
http://www.androidsnippets.org/snippets/45/
Если я удаляю свое приложение и переустанавливаю его, я могу вернуть веб-страницу в актуальное состояние, то есть не кэшированную версию. Основная проблема заключается в том, что изменения вносятся в ссылки на веб-странице, поэтому внешний вид веб-страницы полностью не изменяется.