java - WebView缓存后台预加载

标签 java android webview android-webview

我想使用来自互联网的网页预加载 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/

相关文章:

android - Dagger 未初始化 var

java - 禁用 AlertDialog 上的保存按钮,除非输入字段不为空

java - findViewByID() 不起作用。我应该怎么办?

android - WebView.loadUrl(url,headers)在android中不起作用

java - 在单元测试之前从 .sql 预加载数据会引发语法错误

java - JOptionPane.showInputDialog() 问题

java - Tomcat 调用 Windows bat 文件的某处是否有 1000 个字符的限制?

java - 如何从另一个网站获取字段名称和值?

android - 与recyclerview的数据绑定(bind)我需要帮助。找不到root

javascript - JavaFx WebView 视频 : onended event