我想通过互联网上的网页预加载WebView的缓存。这需要异步完成并隐藏,以免干扰其他UI交互。如果通过可选的按钮单击显示WebView(最终用于更快速的显示),预加载的目的是避免后续网络调用。
网页包含Javascript和AJAX,所以我不认为使用像HttpClient这样的预加载缓存会起作用。我还看了在AsyncTask中使用WebView的loadUrl(),但我发现这与主UI线程有冲突。
是否有类似情况的人找到了完成后台预加载/缓存的方法?
答案 0 :(得分:4)
WebView
默认在单独的线程中加载数据,因此不需要使用AsyncTask。只需创建一个隐藏的WebView并调用loadUrl()
。
如果您要预加载多个网址,可以使用WebViewClient
并覆盖onPageFinished()
来检测第一个网址何时完成。完成WebView
后,请确保删除对它的引用,以便可以对其进行垃圾回收。
最后,如果您想确保可见的WebView
始终使用网址的缓存版本,则可以调用:
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK).