android kitkat webview缓存问题

时间:2014-12-09 11:18:23

标签: android

有一天,我的客户说“Webview缓存似乎堆叠数据区域,而不是缓存区域。我的设备是Optimus G 4.4.2 Kitkat”。

缓存是否真的累积在数据区域中,我检查了我的4.4.2设备。

所以,缓存真正积累了数据区

并且,它不会删除以下方式。

protected void trimCache(Context context) {
    try {
        dir = context.getCacheDir();
        if (dir != null && dir.isDirectory()) {
            deleteDir(dir);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

protected boolean deleteDir(File dir) {
    if (dir != null && dir.isDirectory()) {
        children = dir.list();
        for (String aChildren : children) {
            if (deleteDir(new File(dir, aChildren))) continue;
            return false;
        }
    }
    assert dir != null;
    return dir.delete();
}

and, Webview.clearCache() and Context.deleteDatabase("") . 

我有两个问题。

  1. 如何删除数据区域中的缓存?
  2. 如果我无法删除数据区中的缓存,我怎么能关闭android webview缓存。
  3. P.S。我不是母语,所以我的英语还不够。

2 个答案:

答案 0 :(得分:0)

我用它来清除数据缓存。

    try {
            File cache = getCacheDir();
            File appDir = new File(cache.getParent());

            if (appDir.exists()) {
                String[] children = appDir.list();
                for (String s : children) {

                    if (!s.equals("databases") &&!s.equals("lib") && !s.equals("shared_prefs")) {

                        deleteDir(new File(appDir, s));

                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

答案 1 :(得分:0)

How can i delete cache in the data area?

您可以查看此link以获取有关如何删除缓存数据的更多信息。有一个递归方法,那家伙正在使用。

if i can't delete cache in the data area, How i can turn off android webview cache.

您可以尝试使用

     mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
     mWebView.getSettings().setAppCacheEnabled(false);

但更重要的是,在创建webview之后,在加载任何页面之前,您可以清除缓存,如documentation中所述。

mWebView.clearCache(true)