Android WebView-清除缓存
我有一个WebView控件,我想每次都显示当前站点,但我认为WebView只显示站点的缓存版本。我试了所有找到的东西,但似乎都不管用。我还尝试从context.getCacheDir()中删除所有文件,但没有成功。我能做什么 这是我的onCreate方法代码:Android WebView-清除缓存,android,webview,browser-cache,Android,Webview,Browser Cache,我有一个WebView控件,我想每次都显示当前站点,但我认为WebView只显示站点的缓存版本。我试了所有找到的东西,但似乎都不管用。我还尝试从context.getCacheDir()中删除所有文件,但没有成功。我能做什么 这是我的onCreate方法代码: clearCache(this, 0); setContentView(R.layout.webview); deleteDatabase("webview.db"); deleteDatabase("
clearCache(this, 0);
setContentView(R.layout.webview);
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
mWebView = (WebView)findViewById(R.id.webview);
mWebView.setWebViewClient(new CenterWebViewClient(this));
mWebView.setWebChromeClient(new CenterWebChromeClient(this));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setAppCacheMaxSize(1);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
String url = "https://www.exacmple.com";
if (url != null) {
Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
mWebView.loadUrl(url, noCacheHeaders);
}
clearCache(这个,0);
setContentView(R.layout.webview);
删除数据库(“webview.db”);
删除数据库(“webviewCache.db”);
mWebView=(WebView)findViewById(R.id.WebView);
setWebViewClient(新的CenterWebViewClient(此));
mWebView.setWebChromeClient(新的CenterWebChromeClient(this));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setAppCacheMaxSize(1);
mWebView.getSettings().setCacheMode(WebSettings.LOAD\u NO\u缓存);
字符串url=”https://www.exacmple.com";
如果(url!=null){
Map noCacheHeaders=newhashmap(2);
noCacheHeaders.put(“Pragma”,“无缓存”);
noCacheHeaders.put(“缓存控制”、“无缓存”);
loadUrl(url,noCacheHeaders);
}
clearCache功能:
static int clearCacheFolder(final File dir, final int numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
//first delete subdirectories recursively
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
//then delete the files and subdirectories in this dir
//only empty directories can be deleted, so subdirs have been done first
if (child.lastModified() < new Date().getTime() - numDays * DateUtils.DAY_IN_MILLIS) {
if (child.delete()) {
deletedFiles++;
}
}
}
}
catch(Exception e) {
Log.e("WebView", String.format("Failed to clean the cache, error %s", e.getMessage()));
}
}
return deletedFiles;
}
public static void clearCache(final Context context, final int numDays) {
Log.i("WebView", String.format("Starting cache prune, deleting files older than %d days", numDays));
int numDeletedFiles = clearCacheFolder(context.getCacheDir(), numDays);
Log.i("WebView", String.format("Cache pruning completed, %d files deleted", numDeletedFiles));
}
静态int clearCacheFolder(最终文件目录,最终int numDays){
int deletedFiles=0;
if(dir!=null&&dir.isDirectory()){
试一试{
对于(文件子项:dir.listFiles()){
//首先递归删除子目录
if(child.isDirectory()){
deletedFiles+=clearCacheFolder(子项,numDays);
}
//然后删除此目录中的文件和子目录
//只能删除空目录,因此必须先执行子目录
if(child.lastModified()
无论何时显示webview,似乎都可以清除缓存
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}
通过-这不是缓存问题,只是服务器端的会话问题,我必须删除cookies,现在它可以工作了。要清除应用程序中的cookies:
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
. 我做到了,但不起作用。你所做的是什么?我提供的链接上也提供了该解决方案,但对我不起作用。你是如何清除cookie的。你能解释一下吗hi@Adi,我现在不记得了,但我可能从浏览器设置中删除了cookies。