有没有人成功限制其WebView缓存的大小?

时间:2011-02-17 02:29:02

标签: android caching webview

我正在创建一个新闻阅读器应用,有时会将网页加载到WebView

我注意到,使用默认行为时,缓存很快就会变得非常不合理。无论Android是否会在内存不足时清除缓存,我不满意我的用户看到15MB的新闻应用,除了网络缓存以外的所有内容都是1MB左右。

但是,我希望在某种程度上使用缓存。我看到了WebSettings #setAppCacheMaxSize(),看起来它只是票。

它似乎没有做任何事情。在将任何内容加载之前,我将以下内容硬编码到我的活动的onCreate()调用的方法中:

originalSourceWebView.getSettings().setAppCacheMaxSize(300*1024);(我使用的是更大的可配置值,但是将其降低以确认我的问题)。

我没有大张旗鼓地向右吹300KB,如settings->applications->manage applications->click on my app所示。我在WebChromeClient#onReachedAppMaxCacheSize中搜索事件,但似乎从未触发过。

有没有人成功使用过这个?我应该尝试管理一些不同的缓存吗?文档看起来很稀疏。我进入了android源代码,但它只是将值发送到本机代码,我不知道如何深入研究它。

我的测试环境是2.2.2的关联环境。我知道我需要通过反射来调用缓存以支持1.5和1.6,但是如果我不能完成这项工作,就没有必要。

1 个答案:

答案 0 :(得分:6)

我不认为有一个API可以做你想要的。

setAppCacheMaxSize限制HTML5应用程序缓存API的缓存大小 - HTML 5应用程序在WebView中运行时可以使用的脱机存储 - 但听起来您想要限制用于加载页面的缓存。图像等。

作为一种解决方法,您可以定期调用WebView.clearCache,但这确实会限制缓存的有效性。如果您想尝试保留最近的一些页面,可以在清除缓存之前从CacheManager获取它们,然后再恢复它们。