3

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

该网页包含 Javascript 和 AJAX,因此我认为使用 HttpClient 之类的东西预加载缓存不会起作用。我还查看了在 AsyncTask 中使用 WebView 的 loadUrl() ,但我发现这与主 UI 线程发生冲突。

有没有类似情况的人找到一种方法来完成后台预加载/缓存?

4

1 回答 1

6

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

如果要预加载多个 URL,可以使用 aWebViewClient和 overrideonPageFinished()来检测第一个 URL 何时完成。完成后,请WebView确保删除对它的引用,以便对其进行垃圾收集。

最后,如果你想确保可见的WebView总是在可用时使用 url 的缓存版本,你可以调用:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK).
于 2013-03-25T16:30:48.053 回答