Мои android webviews
медленные. Это на всех, от телефонов до 3.0+
планшетов с более чем адекватными характеристиками
Я знаю, что веб-просмотры должны быть «ограниченными», но я вижу, что веб-приложения сделаны с пробелом в телефоне, который должен использовать все виды CSS3
и JQuery
колдовство, они работают просто отлично и быстро
так что я что-то упустил, есть ли что-то, myWebview.SPEEDHACK(1)
что я могу использовать для ускорения вещей?
Кроме того, иногда содержимое моего веб-просмотра просто не загружается, вместо медленной загрузки, оно просто не загружается. Актив, с которым я тестирую, хранится локально, без ошибок.
Ответы:
Это зависит от загружаемого веб-приложения. Попробуйте некоторые из подходов ниже:
Установить более высокий приоритет рендеринга (не рекомендуется в API 18+):
Включить / отключить аппаратное ускорение:
Отключите кеш (если у вас проблемы с контентом):
источник
Добавление этого
android:hardwareAccelerated="true"
в манифест было единственным, что значительно улучшило производительность для меняБолее подробная информация здесь: http://developer.android.com/guide/topics/manifest/application-element.html#hwaccel
источник
android:hardwareAccelerated="true"
CSS 3D-анимации перед запуском были большие задержки, прокрутка DIV внутри других прокручиваемых DIV не работала, и приложение было более нестабильным.Решение для нас было противоположным. Мы отключили аппаратное ускорение только для WebView (а не для всего приложения в манифесте) с помощью этого кода:
CSS3 анимация теперь более плавная. Мы используем Android 4.0.
Подробнее здесь: https://code.google.com/p/android/issues/detail?id=17352.
источник
WebView not displayed because it is too large to fit into a software layer (or drawing cache), needs 11534400 bytes, only 8294400 available
Я думаю, что следующее работает лучше всего:
Android 19 имеет движок Chromium для WebView. Я думаю, это работает лучше с аппаратным ускорением.
источник
У меня была такая же проблема, и я должен был ее решить. Я попробовал эти решения, но в итоге производительность, по крайней мере для прокрутки, не улучшилась. Итак, вот что я сделал, и объяснение того, почему это сработало для меня.
Если у вас была возможность немного изучить события перетаскивания, создав класс «MiWebView», переписав метод «onTouchEvent» и хотя бы напечатав время, в которое происходит каждое событие перетаскивания, вы увидите, что они разделены вовремя (до) 9 мс. Это очень короткое время между событиями.
Взгляните на исходный код WebView и просто посмотрите на функцию onTouchEvent. Это просто невозможно обработать процессором менее чем за 9 мс (продолжайте мечтать !!!). Вот почему вы постоянно видите «Пропусти перетаскивание, пока мы ждем ответа WebCore для приземления». сообщение. Код просто не может быть обработан вовремя.
Как это исправить? Во-первых, вы не можете переписать код onTouchEvent, чтобы улучшить его, это слишком много. Но вы можете «насмехаться над этим», чтобы ограничить частоту событий для перетаскивания движений, скажем, до 40 или 50 мс. (это зависит от процессора).
Все события касания идут так: ACTION_DOWN -> ACTION_MOVE ...... ACTION_MOVE -> ACTION_UP. Таким образом, нам нужно сохранять движения ВНИЗ и ВВЕРХ и фильтровать скорость движения (это плохие парни).
И вот способ сделать это (вы можете добавить больше типов событий, таких как касание двумя пальцами, все, что меня интересует, это прокрутка одним пальцем).
Конечно, используйте этот класс вместо WebView, и вы увидите разницу при прокрутке.
Это всего лишь подход к решению, но еще не полностью реализованный для всех случаев задержки из-за касания экрана при использовании WebView. Однако это лучшее решение, которое я нашел, по крайней мере, для моих конкретных потребностей.
источник
Я попробовал все предложения, чтобы исправить проблему производительности рендера в моем приложении phonegap. Но на самом деле ничего не получалось.
Наконец, после целого дня поисков я сделал это. Я установил в тег (а не тег) моего AndroidManifest
Теперь приложение работает так же быстро, как и мой веб-браузер. Похоже, если аппаратное ускорение не всегда лучшая функция ...
Подробная проблема у меня была: https://stackoverflow.com/a/24467920/3595386
источник
Ни один из этих ответов не помог мне.
Наконец я нашел причину и решение. Причиной было много фильтров CSS3 (filter, -webkit-filter).
Решение
Я добавил обнаружение WebView в скрипт веб-страницы, чтобы добавить класс «lowquality» в тело HTML. КСТАТИ. Вы можете легко отслеживать WebView, установив user-agent в настройках WebView. Затем я создал новое правило CSS
источник
Если в вашем веб-представлении есть только несколько компонентов, которые работают медленно или медленно, попробуйте добавить это к элементам css:
Это был единственный спидхак, который действительно повлиял на мой веб-обзор. Но будьте осторожны, чтобы не злоупотреблять этим! (Вы можете прочитать больше о взломе в этой статье .)
источник
will-change: transform
.Попробуй это:
источник
Если вы привязываетесь к
onclick
событию, оно может быть медленным на сенсорных экранах.Чтобы сделать это быстрее, я использую fastclick , который использует гораздо более быстрые события касания, чтобы имитировать событие щелчка.
источник
$('#').on('touchstart', function() {...});
в отличие от onclick