Почему мой веб-просмотр на Android загружается медленно? - PullRequest
0 голосов
/ 25 сентября 2018

когда я пробую ссылку в браузере, она открывается очень быстро, в то время как на моем 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 голосов
/ 25 сентября 2018

К сожалению, мало что можно сделать, чтобы это исправить.Однако:

Есть несколько вещей, которые вы можете попробовать, и несколько вещей, которые нужно проверить.В частности:

Вы устанавливаете видимость на View.GONE (делая ваше веб-представление невидимым) во время загрузки страницы, а затем снова делаете его видимым после загрузки страницы.Вероятно, это проблема.

Попробуйте без этого, и вы, вероятно, обнаружите, что это будет быстрее.По моему опыту, onPageFinished (..) срабатывает только через некоторое время после загрузки страницы.

Действительно ли страница требует JavaScript?Если нет, не включайте его.

Если это возможно в вашем случае, вы можете использовать HTML-анализатор, такой как Jsoup, чтобы извлекать только нужные данные со страницы и показывать их пользователю.Это будет намного быстрее.

Если страница использует Ajax для динамической загрузки данных, вы также можете загрузить данные непосредственно с конечных точек, которые она использует.Откройте страницу в браузере на рабочем столе и откройте вкладку «Сеть» инструментов разработчика, чтобы узнать, как эта страница работает и загружает данные.

Вы можете заблокировать запросы из WebView с помощью shouldInterceptRequest (..).Это может помочь, если на странице есть такие вещи, как, например.Facebook поделиться кнопками или дополнительными изображениями, которые вам не нужны.Их блокирование ускорит загрузку.

Если вы покажете нам используемый вами URL-адрес, возможно, я смогу узнать больше и точно рассказать, как вы могли бы ускорить его в вашем случае.Дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...