Вопрос по android, jquery-mobile – PhoneGap - плохая производительность по сравнению с браузером на Android

7

Я разработал приложение для Android, используя jquery mobile и phonegap. Я развернул приложение на моем устройстве через USB. Производительность приложения очень плохая, особенно при прокрутке длинного списка.

Странная вещь: все приложение работает без проблем, если я просто открою браузер на телефоне и получу прямой доступ к index.html. Та же технология, тот же контент. Я не использую PhoneGap родной API или ничего подобного.

Протестировано с PhoneGap 1.5.0 и 1.7.0rc1, JQuery Mobile 1.1.0 на Android 4.0.2.

Есть идеи?

@Chris: я не использую какие-либо плагины или код, который просто работает в phonegap rbk
У вас их может и не быть, но браузер может иметь расширения / переопределения функций веб-просмотра системы - это то, о чем говорит ваша ссылка. Но исключите проблемы в своем javascript - наведите указатель на сайт с эталонным тестом и посмотрите, видите ли вы разницу в производительности в чужом коде. Chris Stratton
@codaniel: около 50 элементов с миниатюрами rbk
Мне просто любопытно, какой большой список мы здесь обсуждаем? codaniel
Предполагая, что оба используют системную библиотеку webkit, может показаться, что это либо разные параметры конфигурации, либо дополнительные надстройки в одной или другой среде, либо что-то странное в вашем коде, которое бросает вызов одному, но не другому. Возможно, было бы интересно указать на оба сайта javascript. Chris Stratton

Ваш Ответ

5   ответов
11

мороженых (4.0) и задних устройствах вы можете повысить производительность, добавив следующее в & lt; Приложение ... & gt; тег:

android:hardwareAccelerated="true"

Вы можете установить minSdk на 8 (Android 2.2) для совместимости и targetSdk на 15 (Android 4.0), и это обеспечит аппаратное ускорение, если оно доступно только на устройстве.

Я считаю, что с этим флагом производительность моих приложений равна запуску их в браузере, поэтому я думаю, что это потому, что браузер был закодирован с аппаратным ускорением :)

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

что браузер работает лучше (что это не является чем-то неоптимальным в вашем коде, расстраивающем одно, но не другое), вы можете рассмотреть вопрос о развертывании как автономного приложения html5, так что вы фактически будете работать в браузере.

1

Нашел ответ здесь:http://groups.google.com/group/phonegap/browse_thread/thread/94da1cf881abe995/6d4f7aea7aeba523?lnk=gst&q=performance

Вероятно, существует разница между нативным браузером и веб-обзором с точки зрения производительности JavaScript.

0

го количества элементов списка с помощью jquery mobile. Производительность была настолько низкой (мы даже не пробовали в среде PhoneGap), что мы переписали приложение с помощью библиотеки iScroll ... теперь приложение прокручивается очень плавно.

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

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

2

страница с более длинным списком «средний комплекс» тематические дивы. В браузере телефона HTC проблем с отображением не было. Но в приложении PhoneGap рендеринг не удался полностью. Я видел своего рода WSOD, который исчез только после касания дисплея. После касания страница отображалась правильно.

Проблема не была на месте, когда я сократил список div до одного или двух элементов div или когда я уменьшил подэлементы внутри элементов div и уменьшил усилие рендеринга, вызванное сложностью css.

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

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

Наконец, после целого дня поисков я сделал это. Я установил в тег (не тег) моего AndroidManifest

<application android:hardwareAccelerated="false" ...

Теперь приложение работает так же быстро, как и мой веб-браузер. Похоже, если аппаратное ускорение не всегда лучшая функция ...

Мои версии: phonegap 3.5.0, Android 4.0.3, jQuery v2.1.0, HTC Sense 3.6

Похожие вопросы