当我在浏览器中尝试链接时,它打开得很快 而在我的 Android
webview
上,它运行缓慢
我应该怎么做才能让我的webview
跑得更快?
webview.settings.javaScriptEnabled = true
val title = response.body()?.attachment
val filename = "http://lalala.com" + title
webview.loadUrl("http://docs.google.com/gview?embedded=true&url=" + filename)
webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH)
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE)
if (Build.VERSION.SDK_INT >= 19) {
webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
else {
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
webview.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
// do your stuff here
progressbar.visibility = View.GONE
webview.loadUrl("javascript:(function() { " +
"document.querySelector('[role=\"toolbar\"]').remove();})()")
}
}
不幸的是,您无能为力来解决这个问题。然而:
有一些事情你可以尝试,还有一些事情需要检查。具体来说:
您在页面加载时将可见性设置为 View.GONE (使您的 web 视图不可见),然后在页面加载时使其再次可见。这可能就是问题所在。
尝试不使用这个,你可能会发现它会更快。根据我的经验, onPageFinished(..) 仅在页面加载后一段时间才会触发。
该页面真的需要 JavaScript 吗?如果没有,请不要启用它。
如果您的情况可行,您可以使用像 Jsoup 这样的 HTML 解析器从页面中仅提取所需的数据,并将其显示给用户。这样会快很多。
如果页面使用Ajax动态加载数据,您也可以直接从其使用的端点加载数据。在桌面浏览器中打开页面,然后打开开发者工具的网络选项卡,了解页面的工作原理和加载数据的情况。
您可以使用shouldInterceptRequest(..)阻止来自WebView的请求。如果页面有类似这样的内容,这可能会有所帮助。 Facebook 共享您不需要的按钮或额外图像。阻止这些将加快加载时间。
如果您向我们展示您正在使用的网址,也许我可以进行更多调查,并准确地告诉您如何在您的情况下加快速度。如果有帮助请告诉我。
我的 Android 网页无法加载