Повысьте производительность webView (должна быть такая же производительность, что и собственный веб-браузер)

Мой опыт заключается в том, что загрузка веб-сайтов в WebView намного медленнее, чем выполнение тех же действий в Android-браузере Android. Я вижу, что все файлы загружены в мой Apache-журнал, это займет несколько секунд, пока страница не будет отображаться в элементе управления WebView. Открытие одной и той же страницы в собственном веб-браузере приведет к немедленному отображению. Кажется, что рендеринг каким-то образом искалечен.

Какие настройки браузера мы должны применять для достижения такой же производительности, как и загрузка страницы в собственном веб-браузере?

Наши текущие настройки:

browserset.setLoadsImagesAutomatically(true); browserset.setJavaScriptEnabled(true); browserset.setDatabaseEnabled(true); browserset.setDatabasePath("data/data/com.xxx/databases"); browserset.setDomStorageEnabled(true); browserset.setRenderPriority(WebSettings.RenderPriority.HIGH); browserset.setSupportZoom(false); browserset.setUserAgentString( browserset.getUserAgentString() + " (XY ClientApp)" ); browserset.setAllowFileAccess(true); browserset.setSavePassword(false); browserset.setSupportMultipleWindows(false); browserset.setAppCacheEnabled(true); browserset.setAppCachePath(""); browserset.setAppCacheMaxSize(5*1024*1024); 

Я столкнулся с подобной проблемой, и после некоторой тяжелой отладки заметил, что собственный браузер и браузер WebView, похоже, используют разные кеши.

Этот код можно использовать для отключения кэша WebView и сделать WebView намного быстрее для меня (хотя и за счет кэширования). Обратите внимание, что он использует частные API, поэтому, используя его, вы рискуете, что код будет разбит в будущих версиях:

 try { Method m = CacheManager.class.getDeclaredMethod("setCacheDisabled", boolean.class); m.setAccessible(true); m.invoke(null, true); } catch (Throwable e) { Log.i("myapp","Reflection failed", e); } 

Я, наконец, получил причину проблемы производительности Android в Android. Обратите внимание на изображение ниже … Он использовал 12 секунд от OnPageStarted до OnPageFinished. Потому что он должен загружать CSS, javascript и … AJAX …

окно отладки:

Я заметил, что JQuery и JQueryMobile загружают всю структуру DOM в Html. Так что, если я lazy загружаю javascript после OnPageFinished, он должен показывать страницу быстрее.

Сначала используйте setTimeout вместо $ (document) .ready (function () {}); в JQuery. Затем используйте lazyload javascript-файл.

Окончательный html и javascript:

   

Вы можете найти lazyload-min.js в http://wonko.com/post/painless_javascript_lazy_loading_with_lazyload

После этого вы можете увидеть изображение журнала ниже:

после изменения javascript

Теперь от OnPageStarted до OnPageFinished требуется всего 2 секунды.

Я опубликовал статью на https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431

Но это было написано на китайском языке 🙂

  • Конкатенация строк и String Builder. Представление
  • Делают ли c ++ шаблоны медленными?
  • Эффективный декартовы алгоритм продукта
  • Производительность сериализации C ++
  • Эффективность отражения Java
  • Кто-нибудь действительно эффективно реализовал Fibonacci-Heap?
  • Есть ли разница в производительности между i ++ и ++ i в C?
  • Есть ли 128-битное целое число в C ++?
  • LINQ Ring: Any () vs Содержит () для огромных коллекций
  • Разница в скорости при использовании встроенных строк против конкатенации в php5?
  • Какова стоимость выполнения виртуального метода в classе C ++?
  • Interesting Posts

    Как обеспечить доступ в Интернет только через VPN

    Что такое функция батута?

    Как вы строите гистограммы в gnuplot?

    Могу ли я просматривать Windows App Store за пределами Windows 8?

    Динамическое создание или ссылка переменных в Sass

    Excel. Создайте текстовый файл, названный по имени ячейки, содержащей другие данные ячейки.

    Настройки кодировки FFmpeg x264

    Как вернуть накопленные результаты нескольких (параллельных) асинхронных вызовов функций в цикле?

    Обнаружение 7-дюймового и 10-дюймового планшета программно

    Как выполнить файл dex в android с помощью команды?

    Как сохранить вывод из формата таблицы для последующего использования

    Добавить пункт меню в контекстное меню Windows только для определенного типа файла

    Сброс неправильный

    Как я могу хранить постоянные куки-файлы только из определенных доменов?

    Как добавить больше дискового пространства на локальный диск?

    Давайте будем гением компьютера.