WebView缓存的后台预加载

时间:2013-02-26 16:20:29

标签: java android webview android-webview

我想通过互联网上的网页预加载WebView的缓存。这需要异步完成并隐藏,以免干扰其他UI交互。如果通过可选的按钮单击显示WebView(最终用于更快速的显示),预加载的目的是避免后续网络调用。

网页包含Javascript和AJAX,所以我不认为使用像HttpClient这样的预加载缓存会起作用。我还看了在AsyncTask中使用WebView的loadUrl(),但我发现这与主UI线程有冲突。

是否有类似情况的人找到了完成后台预加载/缓存的方法?

1 个答案:

答案 0 :(得分:4)

WebView默认在单独的线程中加载数据,因此不需要使用AsyncTask。只需创建一个隐藏的WebView并调用loadUrl()

如果您要预加载多个网址,可以使用WebViewClient并覆盖onPageFinished()来检测第一个网址何时完成。完成WebView后,请确保删除对它的引用,以便可以对其进行垃圾回收。

最后,如果您想确保可见的WebView始终使用网址的缓存版本,则可以调用:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK).