【问题标题】:Background pre-loading of WebView cacheWebView缓存的后台预加载
【发布时间】:2013-02-26 16:20:28
【问题描述】:
我想使用来自 Internet 的网页预加载 WebView 的缓存。这需要异步完成并隐藏,以免干扰其他 UI 交互。预加载的目的是在 WebView 通过可选按钮单击呈现时避免后续的网络调用(最终是为了更快地显示)。
该网页包含 Javascript 和 AJAX,所以我认为使用 HttpClient 之类的东西预加载缓存是行不通的。我还查看了在 AsyncTask 中使用 WebView 的 loadUrl(),但我发现这与主 UI 线程发生冲突。
有没有类似情况的人找到方法来完成后台预加载/缓存?
【问题讨论】:
标签:
java
android
webview
android-webview
【解决方案1】:
WebView默认是在单独的线程中加载数据,所以不需要使用AsyncTask。只需创建一个隐藏的 WebView 并调用 loadUrl()。
如果您想预加载多个 URL,您可以使用 WebViewClient 并覆盖 onPageFinished() 来检测第一个 URL 何时完成。完成 WebView 后,请确保删除对它的引用,以便对其进行垃圾回收。
最后,如果您想确保可见的WebView 在可用时始终使用 url 的缓存版本,您可以调用:
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK).