gpt4 book ai didi

Android WebView - 清除缓存

转载 作者:行者123 更新时间:2023-11-29 14:32:38 25 4
gpt4 key购买 nike

我有一个 WebView 控件,我想每次都显示当前站点,但我认为 WebView 只显示该站点的缓存版本。我尝试了所有找到的东西 here但似乎没有任何效果。我还尝试从 context.getCacheDir() 中删除所有文件,但没有成功。我能做什么?

这是我在 onCreate 方法中的代码:

    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);
}

清除缓存函数:

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));
}

最佳答案

似乎只要显示 webview 就可以清除缓存

 @Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}

通过 - https://stackoverflow.com/a/10701961/2250339

关于Android WebView - 清除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com