为什么我的 Android 上的 webview 加载速度很慢?

问题描述 投票:0回答:2

当我在浏览器中尝试链接时,它打开得很快 而在我的 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();})()")
                    }
                }
android pdf android-webview
2个回答
1
投票

不幸的是,您无能为力来解决这个问题。然而:

有一些事情你可以尝试,还有一些事情需要检查。具体来说:

您在页面加载时将可见性设置为 View.GONE (使您的 web 视图不可见),然后在页面加载时使其再次可见。这可能就是问题所在。

尝试不使用这个,你可能会发现它会更快。根据我的经验, onPageFinished(..) 仅在页面加载后一段时间才会触发。

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

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

如果页面使用Ajax动态加载数据,您也可以直接从其使用的端点加载数据。在桌面浏览器中打开页面,然后打开开发者工具的网络选项卡,了解页面的工作原理和加载数据的情况。

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

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


0
投票

我的 Android 网页无法加载

© www.soinside.com 2019 - 2024. All rights reserved.