Подтвердить что ты не робот

Почему PhoneGap работает медленнее, чем браузер?

Я запускаю то же самое точное веб-приложение на Android под PhoneGap и под встроенным браузером. Приложение прекрасно работает во встроенном браузере, но невероятно медленным при использовании PhoneGap. Даже базовая прокрутка на странице заикается под PhoneGap.

Есть ли вообще что-то, что я могу ошибаться? У меня создалось впечатление, что PhoneGap просто использует тот же рендер WebKit, что и обычное приложение для браузера, так почему же один и тот же HTML и JavaScript выполняются намного медленнее внутри PhoneGap?

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

4b9b3361

Ответ 1

Возможно, я случайно наткнулся на ответ на этот вопрос. Оказывается, что приложения, над которыми я работал, имели android:targetSdkVersion в AndoroidManifest.xml, установленное на действительно низкое значение (т.е. Моя целевая версия Android была чем-то вроде 2.2). Увеличение этого показателя до 14 (Android 4.0), по-видимому, значительно улучшило производительность PhoneGap, по крайней мере, на новых Android-устройствах, работающих под управлением ICS или Jelly Bean.

Установка низкого targetSdkVersion, по-видимому, отключает хотя бы некоторые улучшения производительности, появившиеся в новых версиях Android.

Итак, если вы хотите увеличить производительность в PhoneGap, убедитесь, что ваш targetSdkVersion соответствует максимальной версии SDK, поддерживаемой телефоном, на котором вы тестируете.

Ответ 2

Я не знаю phoneGap, но вы можете попробовать:

  • Добавление android:hardwareAccelerated="true" в манифест
  • Если вы используете webview webview.getSettings().setRenderPriority(RenderPriority.HIGH); и webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

Ответ 3

Он интуитивно понятен, но на самом деле вам может потребоваться отключить аппаратное ускорение для вашего веб-просмотра. Аппаратное ускорение с Android 4.0.4 ничего не делает для холста и других событий перерисовывания, но фактически удаляет ресурсы ЦП для этих событий.

Попробуйте добавить эту строку кода в свой Java файл приложения:

super.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Также установите android: hardwareAccelerated = "false" в манифесте.

Ответ 4

То же самое, что я испытал! Раньше я использовал Android 3.x для тестирования. Как только я обновился до 4.4.2, мой Холст был мертв медленно! Глядя на временную шкалу рендеринга, я мог видеть, что многие вызовы Rasterization занимают более 100 мс и уменьшают мой FPS до 8! android: hardwareAccelerated = "false" решил мои проблемы. Есть ли способ установить hardwareAccelerated = "true" в зависимости от версии Android?