我想使用来自互联网的网页预加载 WebView 的缓存。这需要异步完成并隐藏,以免干扰其他 UI 交互。预加载的目的是避免在 WebView 通过可选按钮单击方式呈现时进行后续网络调用(最终是为了加快显示速度)。
该网页包含 Javascript 和 AJAX,因此我认为使用 HttpClient 之类的东西预加载缓存是行不通的。我还查看了在 AsyncTask 中使用 WebView 的 loadUrl(),但我发现这与主 UI 线程有冲突。
有没有类似情况的 friend 找到办法实现后台预加载/缓存?
最佳答案
WebView
默认情况下是在单独的线程中加载数据,因此无需使用 AsyncTask。只需创建一个隐藏的 WebView 并调用 loadUrl()
。
如果您想预加载多个 URL,您可以使用 WebViewClient
并覆盖 onPageFinished()
以检测第一个完成的时间。使用完 WebView
后,请确保删除对它的引用,以便它可以被垃圾回收。
最后,如果你想确保可见的 WebView
在可用时总是使用 url 的缓存版本,你可以调用:
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK).
关于java - WebView缓存后台预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094083/