相关疑难解决方法(0)

Android Webview - 完全清除缓存

我的一个活动中有一个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"));
Run Code Online (Sandbox Code Playgroud)

所以我实现了第一个建议(尽管改变了代码是递归的)

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);
            } …
Run Code Online (Sandbox Code Playgroud)

android caching webview

103
推荐指数
6
解决办法
16万
查看次数

101种清除WebView缓存的方法 - 所有这些都不起作用

我的应用程序中有一个非常简单的WebView,它显示"欢迎"对话框.

我通过语言发送服务器响应,如下所示:

Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
noCacheHeaders.put("Accept-Language", Locale.getDefault().toString());
mWebView.loadUrl("www.fake.com", noCacheHeaders);
Run Code Online (Sandbox Code Playgroud)

这很好 - 但是,当我更改设备语言时,我希望WebView语言也能改变,我可以看到它的值"Accept-Language"调试时正在改变但是WebView中的内容没有改变.我已经找到了停止缓存的方法,我将在下面介绍.在语言更改后,它们都不会使网站加载不同.

为了确保服务器不是缓存问题,我确保在清除"应用程序数据"并重新启动后WebView内容发生更改.非常确凿的证据表明App正在存储WebView数据.

所以,我已经遵循了下面列出的许多不同的建议.其中没有一个实际上是在改变我的内容WebView:

这里开始导致崩溃:

mWebView.clearCache(true);
mContext.deleteDatabase("webview.db");
mContext.deleteDatabase("webviewCache.db");
Run Code Online (Sandbox Code Playgroud)

这就是它自己(在loadURL之前,在它之后,onProgress = 100):

mWebView.clearCache(true);
Run Code Online (Sandbox Code Playgroud)

这里开始:

mWebView.getSettings().setAppCacheMaxSize(0);
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

mWebView.getSettings().setAppCacheEnabled(false);
Run Code Online (Sandbox Code Playgroud)

所有都导致相同的行为.将设备语言从德语切换为英语时,我的WebView仍保留德语网站内容.

以下是所有代码:

    Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
    noCacheHeaders.put("Pragma", "no-cache");
    noCacheHeaders.put("Cache-Control", "no-cache");
    noCacheHeaders.put("Accept-Language", Locale.getDefault().toString());

    mWebView.getSettings().setAppCacheEnabled(false); 
    mWebView.clearCache(true);
    mWebView.getSettings().setAppCacheMaxSize(0);

    mWebView.setWebChromeClient(new WebChromeClient() {
           public void onProgressChanged(WebView view, int progress) {                 
               mProgress.setProgress(progress);
               try {
                   getActivity().setProgress(progress);
                   if(progress == 100) { …
Run Code Online (Sandbox Code Playgroud)

android caching webview

9
推荐指数
1
解决办法
6790
查看次数

Android WebView - 清除缓存

我有一个WebView控件,我想每次显示当前站点,但我认为WebView只显示该站点的缓存版本.我尝试了这里发现的一切,但似乎没有任何效果.我还试图从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);
    }
Run Code Online (Sandbox Code Playgroud)

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 += …
Run Code Online (Sandbox Code Playgroud)

android webview browser-cache

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×3

webview ×3

caching ×2

browser-cache ×1