Tôi có một WebView trong một trong các Hoạt động của tôi và khi tải trang web, trang thu thập dữ liệu nền từ Facebook.Android Webview - Hoàn toàn xóa bộ nhớ cache
Điều tôi thấy là trang được hiển thị trong ứng dụng giống nhau trên mỗi lần ứng dụng được mở và làm mới.
Tôi đã thử đặt WebView không sử dụng bộ nhớ cache và xóa bộ nhớ cache và lịch sử của WebView.
Tôi cũng đã theo các gợi ý ở đây: How to empty cache for WebView?
Nhưng không ai trong số các công trình này, không ai có bất kỳ ý tưởng của tôi có thể khắc phục vấn đề này bởi vì nó là một phần quan trọng của ứng dụng của tôi.
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"));
Vì vậy, tôi thực hiện đề nghị đầu tiên (Mặc dù đã thay đổi mã để được đệ quy)
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");
}
}
}
Tuy nhiên điều này vẫn chưa thay đổi trang nào được hiển thị. Trên trình duyệt máy tính để bàn của tôi, tôi nhận được mã html khác nhau cho trang web được sản xuất trong WebView vì vậy tôi biết WebView phải được lưu vào bộ nhớ đệm ở đâu đó.
Trên kênh IRC, tôi đã được chỉ định khắc phục để xóa bộ đệm ẩn khỏi kết nối URL nhưng không thể xem cách áp dụng nó cho WebView.
http://www.androidsnippets.org/snippets/45/
Nếu tôi xóa ứng dụng và tôi cài đặt lại nó, tôi có thể nhận được các trang web sao lưu cho đến nay, tức là một phiên bản không được lưu trữ. Vấn đề chính là các thay đổi được thực hiện đối với các liên kết trong trang web, vì vậy giao diện người dùng của trang web hoàn toàn không thay đổi.
'mWebView.getSettings(). SetAppCacheEnabled (false);' không hoạt động? – Paul