#android #webview
#Android #веб-просмотр
Вопрос:
У меня есть WebView в рамках действия, которое загружает контент из сети. Когда WebView начинает загружаться, я запускаю другое действие, выполняющее роль заставки, которую я скрываю, когда WebView завершает загрузку.
При тестировании я обнаружил, что загрузка одной и той же веб-страницы занимает больше времени, когда я добавляю заставку, чем когда я этого не делаю. Поэтому я предполагаю, что существует сетевой поток, приоритет которого падает, когда действие, содержащее WebView, переходит в фоновый режим. Как мне управлять этим потоком, чтобы поддерживать скорость WebView?
Я нашел метод setRenderPriority класса WebSettings, я не уверен, что он делает, и я не знаю, о каком «потоке рендеринга» он говорит. Я пытался :
getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
но это никак не повлияло на время загрузки.
Спасибо всем, кто может мне помочь.
Комментарии:
1. Я не уверен, что это напрямую полезно, но установка приоритета рендеринга как высокого может иметь пагубные последствия для некоторых устройств, таких как Droid X. Я столкнулся с постоянными отчетами о принудительном закрытии / ожидании для моего приложения на Droid X и Droid 2 после внесения этого изменения в мой код. Однако другие устройства, такие как HTC EVO и Samsung Galaxy, работали нормально. Итак, я рекомендую вам не делать этого.
Ответ №1:
Я не отвечаю прямо на ваш вопрос, а скорее предлагаю альтернативу … запуск другого действия для простого создания заставки может быть довольно дорогостоящим. Вместо этого вы могли бы рассмотреть возможность расширения макета, содержащего ваш WebView, для размещения RelativeLayout на уровне WebView и сделать ваш WebView дочерним элементом этого макета. Кроме того, вы можете поместить ImageView (или все, что вам нужно для вашей заставки) в тот же RelativeLayout, и вы можете установить для его видимости значение invisible, когда вы не хотите, чтобы оно отображалось.
Комментарии:
1. В основном я использовал новое действие для создания анимации перехода, которая прилагается к нему, чтобы пользователь чувствовал, что он переключается с экрана на другой, и не знал, что он просто просматривает веб-сайт. Я только что наткнулся на класс ViewFlipper, я изучу его и надеюсь, что это не снизит скорость загрузки Webview. (Но даже если это решит проблему, меня все еще интересуют исходные вопросы. Как напрямую управлять сетевым потоком WebView и для чего нужен метод senRenderPriority.)