为什么App Manager将Android WebView的缓存计为非缓存数据?

时间:2018-06-20 06:51:58

标签: android caching

在我的WebView应用程序中,我正在做

browser.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
browser.getSettings().setAppCacheEnabled(true);

但是在我测试的Android 4.4设备(Sony Xperia Z Ultra)上,如果我转到“设置” /“应用” /“我的应用”名称,则缓存的文件计入“设备上的数据”下,而不计入“缓存”下。

这是一个问题,因为(1)“清除数据”按钮也将清除cookie,无法从该屏幕仅清除缓存,以及(2)如果系统未将该缓存识别为“缓存”那么大概是当存储空间不足时它无法自动清除它。我可以通过提供自己的用于清除缓存的用户界面来解决(1),但不能解决(2)。

为什么setAppCachePathgetCacheDir 导致应用程序管理器将占用的空间计为“缓存”而不是“数据”?

1 个答案:

答案 0 :(得分:0)

原来是Chromium bug 245549,该问题已在2014年11月底修复,因此可能会影响所有低于6.0(API 23)的Android版本。 clearCacheonDestroy时,我应该Integer.valueOf(Build.VERSION.SDK)<23public int[] toPrimitiveInts(Integer[] ints) { int[] primitiveInts = new int[ints.length]; for(int i = 0; i < ints.length; i++) { primitiveInts[i] = ints[i] == null ? 0 : ints[i]; } return primitiveInts; } 中停止占用旧手机太多的空间。