有没有人成功地限制了他们的WebView的caching大小?

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

我注意到,使用默认行为,caching很快就会变得非常不合理。 当内存不足时,Android是否会清除caching,当用户看到一个15MB的新闻应用程序时,除了Webcaching之外的所有内容大概都是1MB左右,我并不好意思。

不过,我想在一定程度上使用caching。 我看到了WebSettings#setAppCacheMaxSize(),它好像只是票据。

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

originalSourceWebView.getSettings().setAppCacheMaxSize(300*1024); (我正在使用一个更大的可configuration的值,但降低了确认我的问题)。

我没有任何夸张的300KB右键,如settings->applications->manage applications->click on my app 。 我在WebChromeClient#onReachedAppMaxCacheSize监听事件,但似乎从来没有触发。

有没有人成功地使用这个? 有没有我应该试图pipe理的一些不同的caching? 文档似乎很稀疏。 我进入android源代码,但它只是将值发送到本机代码,我不知道如何深入研究。

我的testing环境是2.2.2上的一个连接。 我知道我需要通过reflection来调用caching,以支持1.5和1.6,但是如果我不能做这个工作,就没有必要。

Solutions Collecting From Web of "有没有人成功地限制了他们的WebView的caching大小?"

我不认为有一个API来做你想做的。

setAppCacheMaxSize限制了HTML5应用程序cachingAPI的caching大小 – HTML 5应用程序在WebView中运行时可以使用的离线存储 – 但这听起来像您想要限制用于加载页面的caching。 图像等

作为一种解决方法,您可以定期调用WebView.clearCache ,但这确实会限制caching的有效性。 如果你想试着保留一些最近的页面,你可以考虑从cachingpipe理器中获取它们,然后清除caching,然后再恢复它们。