为什么我在安卓上的网络视图加载缓慢?



当我在浏览器中尝试链接时,它打开得非常快 而在我的安卓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 视图不可见(,然后在页面加载时使其再次可见。这可能是问题所在。

尝试没有这个,你可能会发现它会更快。根据我的经验,onPageDone(..(仅在页面加载后的一段时间内触发。

页面真的需要JavaScript吗?如果没有,请不要启用它。

如果它在你的情况下是可行的,你可以使用像Jsoup这样的HTML解析器从页面中提取所需的数据,并将其显示给用户。这会快得多。

如果页面使用 Ajax 动态加载数据,您还可以直接从它使用的端点加载数据。在桌面浏览器中打开页面,然后打开开发人员工具的网络选项卡,以了解页面的工作方式和加载数据的方式。

您可以使用 shouldInterceptRequest(..( 阻止来自 Web 视图的请求。如果页面包含类似 eg 的内容,这可能会有所帮助。Facebook分享你不需要的按钮或额外的图像。阻止这些将加快加载时间。

如果您向我们展示您正在使用的 URL,也许我可以进行更多调查,并准确地告诉您如何在您的情况下加快速度。让我知道它是否有帮助。

最新更新