【发布时间】:2013-01-01 18:41:59
【问题描述】:
我在 Android 应用中使用 WebView,我需要防止 WebView 缓存。
不幸的是,这个看似简单的目标似乎几乎不可能实现。我使用的解决方案是在 onPageFinished 事件中执行 webview.clearCache(true) ,以便在每次加载页面时清除缓存。有一些问题...
我注意到随着缓存的增长,执行 clearCache 方法变得非常耗时。有时如果你执行 clearCache 然后切换到包含不同 webview 的不同 Activity,该 webview 将不会加载几秒钟,因为它仍在等待之前的 clearCache 操作完成。
更糟糕的是,在清除缓存后,后续调用 clearCache 的执行时间似乎并没有减少。如果对 clearCache 的调用需要 3 秒才能完成,然后我立即第二次调用 clearCache,那么我希望对 clearCache 的第二次调用几乎立即完成。但这不是我正在经历的;我遇到第二次调用 clearCache 仍然需要大约 3 秒。
有其他人经历过吗?有什么方法可以提高性能吗?等待 2-3 秒加载 web 视图(从本地文件系统)是可怕的。
编辑:
这是我实际清除缓存的最佳选择。它或多或少有效,但有点不稳定,我对它不是 100% 满意(用 Mono c# 编写):
public class NoCacheWebClient : WebViewClient
{
string previous;
public override void OnPageStarted(WebView view, string url, Android.Graphics.Bitmap favicon)
{
base.OnPageStarted(view, url, favicon);
if (!string.Equals(previous, url))
{
previous = url;
view.Reload(); //re-load once to ignore cache
}
else
{
previous = null;
}
}
}
【问题讨论】:
标签: android caching webview clear-cache