【问题标题】: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).

【讨论】:

    猜你喜欢
    • 2019-11-06
    • 2013-06-20
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2011-04-16
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多