Производительность Android достигла более поздних версий, чем 2.3.5 (phonegap / cordova)

В настоящее время я разрабатываю приложение для Android с Phonegap / Cordova (2.1.0 / 2.2.0), JQ-Mobi (не jQueryMobile), HTML5 и Javascript и CSS3. Приложение содержит 2 родных выражения.

Так или иначе, когда я экспортирую свой проект на устройство с последней версией Android, приложение работает намного медленнее, чем устройство 2.3.5.

Я попытался включить HardwareAcceleration и удалил все теней и другие жесткие, чтобы отобразить css3. Все еще на 4.1.1 или 4.0.4 он работает crappy.

Я также обновил до последней версии Кордовы (теперь 2.2.0), и, похоже, она не улучшилась.

Работа с Javascript DOM происходит примерно на 80-90% при запуске приложения.

Худшая производительность заключается в переключении панелей и прокрутке форм, большинство из них имеют некоторые переходы в них. Я тестировал его на Samsung Galaxy S2 android 2.3.5, и он выглядит хорошо и хорошо работает. Это же устройство, но 4.0.4 работает crappy. Samsung Galaxy S3 4.1.1 работает даже crappier. HTC Flyer P512 с android 3.2.1 запускает его, как он должен работать.

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

Я хотел бы добавить, что я не получаю проблемы с Iphone 3gs и объясню, что это определенно проблема с Android.

Solutions Collecting From Web of "Производительность Android достигла более поздних версий, чем 2.3.5 (phonegap / cordova)"

Мои приложения для телефонного разговора работают плавно на iOS, но очень плохо работают на Android. Насколько я понимаю, это связано с тем, что Android гораздо медленнее интерпретирует JavaScript, чем iOS.

Одна вещь, которая может многое помочь, – это сокращение использования библиотек, таких как jQuery и JQM. Если вы хотите включить их, не используйте их там, где вам не нужно.

Такие функции, как jQuery.animate, заведомо замедляют работу на Android, и вам лучше будет перебирать массивы с помощью raw JS, а не использовать jQuery.each и т. Д.

Проблема заключается не только в графическом рендеринге, но и со скоростью, с которой выполняется JavaScript. Хотя снижение разрешения экрана может повысить вашу производительность.

редактировать

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

  • Используйте библиотеки экономно и решая свои проблемы с необработанным и хорошо написанным JavaScript, когда это возможно
  • Храните небольшой DOM и управляйте им как можно реже
  • Используйте методы повышения эффективности JavaScript

Поэтому действительно кажется, что это основная проблема производительности, а не что-то, что можно решить на уровне Phonegap. В качестве ненаучного примера одна и та же функция init () на одном из моих приложений выполняется в среднем примерно 1,2 секунды в iPhone 4s, в то время как в моей галактике s3 s3 s вступает вялая 5 секунд.

Ядро проблемы заключается в том, что все загружается и запускается на одной странице (контекст выполнения) лично, хотя приложения с одной страницей (sencha, jqmobile и т. Д.) – все это ярость, производительность на современных устройствах не влияет на пользователя справедливость. Я бы отделил приложение на разные страницы, это значительно уменьшит размер DOM и создаст отдельные контексты выполнения для каждой новой страницы, что означает, что ваша главная страница (контекст выполнения) хороша и тощая (DOM мала).

У меня была точно такая же проблема. Я задал подобный вопрос и, в конце концов, сам ответил здесь после тонны исследований:

Кордова / медленная работа Phonegap с Open Layers на новом планшете, но отлично работает на новом телефоне

Я не буду повторять весь ответ, который я дал, но медленная производительность на некоторых версиях Android связана с тем, что по сути является ошибкой в ​​WebView, которая дросселирует поддержку ЦП для процессов на основе GPU, но не обеспечивает поддержку графического процессора для компенсации.

У Kitkat V4.4.3 вверх эти фиксированные, но более старые версии, такие как V4.4.2, которые все еще используются на некоторых устройствах, по-прежнему страдают.

Вы можете избежать этого, не используя WebView вообще для рендеринга HTML, и вместо этого используйте Crosswalk. Для нашего проекта это полностью решило проблему, и теперь у нас есть плавное приложение для всех Android-версий, на которые мы нацеливаемся. Это довольно тривиально.

https://crosswalk-project.org/documentation/cordova.html

https://blog.nraboy.com/2014/10/use-crosswalk-ionic-framework-android-apps/

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

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