Intereting Posts
Потоковое аудио MP3 через сокетную связь с использованием OpenSL ES на Android Вкладки в панели действий Android, стилизация значка и текста вместе Push-уведомления с помощью django и GCM Параллельная загрузка с одной и той же служебной службой Android – Как заставить телефон вибрировать при воспроизведении музыки Не удается разрешить com.parse.ParseQueryAdapter Панель инструментов NavigationIcon потеряла тему Добавьте библиотеку android в список библиотек по умолчанию в Studio / SDK Компилировать appcompat v7: 26. + ошибка при добавлении игровых сервисов для поставщика местоположения слияния Проблема с раздвижным ящиком и анимацией Кордовый плагин с андроидным фоном убит через 5 минут Как определить, является ли один из моих действий на переднем плане Android CheckCallingOrSelfPermission не возвращается должным образом Android не прерывает поток ASyncTask после onPostExecution TextView с использованием Spannable – эллипсис не работает

PhoneGap – Плохая производительность по сравнению с браузером на Android

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

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

Протестировано с телефоном 1.5.0 и 1.7.0rc1, jquery mobile 1.1.0 на android 4.0.2.

Есть идеи?

На сотах (3.0), Ice cream (4.0) и задних устройствах вы можете повысить производительность, добавив в тег <Application …> следующее:

android:hardwareAccelerated="true" 

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

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

У меня была аналогичная проблема: страница с более длинным списком «средних сложных» тематических div. В браузере телефона 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

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

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

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

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

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

После этой ситуации мы развертываем наши приложения для тестирования устройств довольно часто, чтобы своевременно управлять проблемами производительности … это стало «политикой» 🙂