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

时间:2018-09-25 02:38:11

标签: android pdf android-webview

当我在浏览器中尝试链接时,它会很快打开 在我的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();})()")
                    }
                }

1 个答案:

答案 0 :(得分:1)

很遗憾,您将无法做很多事情来解决此问题。但是:

您可以尝试一些方法,还有一些需要检查的方法。具体来说:

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

尝试不使用它,您可能会发现它会更快。以我的经验,onPageFinished(..)仅在页面加载后的某个时间触发。

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

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

如果页面使用Ajax动态加载数据,则还可以直接从其使用的端点加载数据。在桌面浏览器中打开页面,然后打开开发人员工具的“网络”标签,以了解页面如何工作和加载数据。

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

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