Sencha Touch 2 – производительность Android

Мы разрабатываем приложение Sencha Touch 2, которое использует Phonegap для установки его в качестве приложения и доступа к хранилищу устройства. Это действительно хорошо работает на iPad 2 и iPad 3. Однако, когда мы пытались запустить приложение на устройстве Android, производительность была очень медленной. Основными элементами, которые замедляли систему, были списки и карусели. Когда мы пытались протестировать одно и то же приложение через Chrome-браузер, производительность была на одном уровне с производительностью iPad.

Есть ли у вас какие-либо предложения о том, что мы можем сделать, чтобы улучшить производительность на Android, возможно, даже перехватывая Phonegap для чего-то, что работает лучше. Или, если мы можем заставить phonegap работать как браузер Chrome.

Спасибо за ваше время и помощь.

Проблема в том, что браузер Android не использует аппаратное ускорение графики. Это означает, что стандартные трюки, которые Sencha (и другие библиотеки HTML5, такие как jQueryMobile, iScroll и т. Д.), Используют для обеспечения хорошей производительности прокрутки, таких как CSS 3D-преобразования, чтобы заставить ваш список отображаться на отдельном уровне, что может Затем переводиться на аппаратное обеспечение, не будет работать на Android. Вместо этого прокрутка списка будет выполняться полностью в программном обеспечении, которое будет медленным!

Однако браузер Chrome обеспечивает ускорение GPU. Android-устройство более чем способно обеспечить хороший опыт работы с HTML5, просто, что стандартный браузер еще не использует преимущества оборудования GPU.

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

Для получения дополнительной информации см. «УЛУЧШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ВАШЕГО HTML5 APP»

Попробуйте установить этот флаг в AndroidManifest.xml: android: hardwareAccelerated = "true"

Обновление: теперь, работая с ST2 дольше, проблемы производительности на Android – это то, что вам нужно принять. Есть много вещей, которые вы можете сделать, чтобы избежать проблем с производительностью, таких как уменьшение количества прослушивателей и событий, сохранить свет DOM (ниже 2000 узлов) и вообще избегать любых преобразований и эффектов CSS3 (в частности, они не очень хорошо работают на Android)

Еще одна вещь, которую стоит рассмотреть, а не использование встроенного WebView, вы можете использовать браузер CrossWalk и встроить его в APK.

https://crosswalk-project.org

Он добавляет небольшой размер вашему APK (15-20MB), но он работает лучше, чем встроенный WebView, и обеспечивает стабильность и согласованность с очень фрагментированной платформой. Подумайте о том, что каждый WebView на Android в зависимости от версии устройства, поставщика и ОС может отличаться по-разному. CrossWalk позволит вам иметь одну и ту же версию на всех устройствах Android 4.0+ и удалять любые проблемы с устройствами или поставщиками.

На Android нет серебряной пули. Графическое ускорение не улучшит выполнение чистого javascript-исполнения или DOM-манипуляции. Если вы хотите понять, почему, тогда начните здесь:

В чем разница между reflow и repaint?

Старый ответ (все еще может быть действительным):

Для ICS и выше следующая настройка в webview значительно улучшит производительность рендеринга для Sencha Touch на Android:

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

Однако, по моему опыту, это приведет к появлению артефактов в CSS-рендеринге в зависимости от изменения устройства и платформы. Я специально не нашел причины для этого, и я не ожидаю, что Google решит его, поскольку компонент webview будет заменен более новой и лучшей версией в Android 4.4.

https://developers.google.com/chrome/mobile/docs/webview/overview

Intereting Posts