IONIC Framework Проблема с производительностью мобильных приложений

Мы разрабатываем мобильное приложение высокого профиля для одного из наших клиентов, использующего структуру IONIC. Мы почти закончили разработку этой фазы. Приложение работает хорошо, когда открытие в браузере Web/Mobile. Однако, когда мы переносим это в мобильное приложение, используя команды framework приложение становится очень медленным и сильно застревает. Это приводит к очень плохому пользовательскому опыту.

Я использую команду "ionic run android" для создания APK. Не могли бы вы помочь нам в этом вопросе? Мы не можем представить APK для тестирования с этой проблемой. Есть ли какая-либо конфигурация, которую я мог бы использовать для ускорения работы приложения.

Кроме того, на большинстве моих страниц добавлен Ionic Loader. Поведение очень непоследовательно (иногда оно появляется). Это также способствует плохому пользовательскому опыту.

Ответы

Ответ 1

Какой ионный загрузчик вы используете? Я был недоволен доступными решениями и закончил свое собственное решение.

Какую версию вы используете для таргетинга и какую версию вы тестируете (физическое устройство)?

Вот несколько советов по производительности:

  • Если таргетинг < 4.4, а размер APK не является проблемой, тогда попробуйте связать время выполнения перекрестка. Это довольно легко с ионным кли, вы можете просто сделать ionic browser add crosswalk, чтобы включить его. Производительность будет лучше, но размер APK будет больше.

  • ionic run android сделает APK, но гораздо лучше сделать ionic build android

  • Минимизировать JS и CSS, выполнить concat и strip debug в gulpfile.js. Я также получил небольшую прибыль от использования html2js на шаблонах.

  • Следите за ng-repeat. Скорее используйте collection-repeat или, если вы должны использовать ng-repeat, убедитесь, что используете функцию track by.

  • Фильтры могут негативно влиять на производительность. При необходимости используйте директивы.

  • Отложить отсрочку! $q является вашим другом и может помочь создать иллюзию скорости.

  • Просто используйте простой ol 'DOM, когда вы можете, а не все должно быть Angular.

  • Используйте одноразовую привязку, где это возможно. {{ ::thing }} устанавливает значение один раз и сохраняет его, что означает меньшее количество наблюдателей, что означает лучшую производительность.

  • Избегайте $scope.$apply(), поскольку это обрабатывает все вещи. Используйте $scope.$digest() вместо этого, и он будет обрабатываться только из области, из которой она вызвана.

  • Держите $$watchers до абсолютного минимума!

  • Объедините только то, что вам нужно. Убедитесь, что вы включили минимальный размер библиотек и т.д.

  • Не используйте jQuery (хотя это очевидно)

Удачи!

Ответ 2

Обновление 09/17/2015

Интеграция Cordova с Crosswalk отлично работает в наши дни, и ее рекомендуется использовать для тестирования и сборки приложения для Android.


Ответ Darryn.ten определенно очень подробный и содержит много замечательных советов. Я хотел бы добавить несколько вещей к тому, что было упомянуто выше:

  • Пешеходный. Это основной инструмент для улучшения производительности (в Android 4.4, где он не имеет встроенного браузера Chromium). Если установка пешеходного перехода с использованием ионного cli вызывает ошибки и ошибки (как это почти наверняка будет), скачайте Intel XDK, и вы сможете легко протестировать/отладить/создать приложение с помощью Crosswalk.
  • Еще одна вещь, с которой я столкнулся, вызывает некоторые серьезные проблемы с производительностью: фоновые изображения и градиенты, я все еще не уверен в производительности непрозрачности в целом, но когда я вынул эти два прокрутки и перехода пошел очень быстро.
  • Используйте аппаратное css (translate3d), чтобы перемещать файл вокруг DOM.

Гибридные приложения по-прежнему не так, как мы хотели бы, чтобы они были, но, надеюсь, рано или поздно он пойдет правильно.