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

Android Hardware Acceleration - использовать или не использовать?

Я разрабатываю приложение, которое его функциональность очень похоже на собственное приложение Facebook Android: социальная сеть, которая большую часть времени пользователь будет тратить на бесконечное ListView отображение большого количества изображений, внесение галереи изображений и т.д..

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

скажем также, что все, что в моем приложении написано наилучшим образом и с учетом лучших практик (для обсуждения...: → )

мое приложение работает неплохо на этом этапе, но когда включив аппаратное ускорение, как описано и обещано в документации разработчиков Android , что делает мое приложение намного более плавным и быстрым.

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

согласно документу Google по этому вопросу, только причина, по которой я могу не использовать эту функцию (помимо всех других причин, о которых я уже упоминал выше), заключается в том, что это может привести к тому, что мое приложение будет использовать больше оперативной памяти. но сколько оперативной памяти? гораздо больше? Я знаю, что когда мое приложение потребляет много оперативной памяти - это становится хорошим кандидатом для уничтожения ОС, когда ему нужно освободить некоторую память.

мой вопрос в основном -

  • "Спокойно" при моих обстоятельствах использовать эту функцию?
  • какие другие проблемы могут возникнуть при использовании?

TIA

4b9b3361

Ответ 1

Использовать или не использовать

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

Если вы планируете иметь общие переходы, а также учитывая, что вы уже рассмотрели масштабирование, переработку, кеширование и т.д., то, возможно, нет смысла больше обременять ваш проект. Кроме того, любые усилия, потраченные на переработку вашего кода для поддержки аппаратного ускорения, не будут влиять на пользователей в версиях ниже 3.0, которые составляют около 36% рынка по состоянию на 8 мая 2013 года.

Память

Что касается использования памяти (в соответствии с этой статьей), включив Android Hardware, приложение загружает драйверы OpenGL для каждого процесса, использует память примерно 2 МБ и повышает его до 8 МБ.

Другие проблемы

Помимо версий API, я полагаю, что это также повлияет на время работы от батареи. К сожалению, нет никаких ориентиров в разных вариантах использования онлайн, чтобы провести линию на этом. Некоторые утверждают, что в данных случаях из-за нескольких ядер gpu использование ускорения может сократить время автономной работы. В целом, я думаю, было бы безопасно, чтобы эффект не был слишком драматичным (или Google сделал бы это основной момент).

Ответ 2

UPDATE

Аппаратное ускорение включено по умолчанию, если ваш целевой уровень API is >= 14


Я бы сказал "да" в вашей ситуации, используйте аппаратное ускорение.

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

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


Часто задаваемый вопрос: будет ли количество бара увеличиваться на действительно большую сумму?

Ответ на этот вопрос будет определяться следующим образом:

1. Ваша способность программирования, т.е. управление списком рециркуляции, масштабирование Экрана изображений.

2. Устройство

Я написал приложение некоторое время назад, которое использовалось для редактирования действительно высоких растровых изображений. Я столкнулся с той же проблемой. Я обнаружил, что на разных устройствах максимальное количество RAM, выделенное ОС, когда аппаратное ускорение включено , зависит от устройства. Если у вашего устройства больше бара, ОС будет выделять больше бара для вашего приложения, поэтому вы никогда не найдете постоянного количества бара, используемого для вашего приложения. Более дорогие устройства всегда будут запускать ваше приложение на большем количестве бара.


Какие еще проблемы могут возникнуть при использовании аппаратного ускорения?

Аппаратное ускорение может вызвать проблемы для некоторых операций 2D-рисования. Если у вас это есть, вы можете включить аппаратное ускорение только для определенных действий в вашем приложении, как указано на Сообщение об аппаратном ускорении в Документах разработчика Android

Самый простой способ включить аппаратное ускорение - включить его в глобальном масштабе для всего приложения. Если в вашем приложении используются только стандартные представления и чертежи, включение его во всем мире не должно вызывать каких-либо неблагоприятных эффектов рисования. Однако, поскольку аппаратное ускорение не поддерживается для всех операций 2D-рисования, включение его может повлиять на некоторые из ваших приложений, которые используют пользовательские представления или вызовы рисования. Проблемы обычно проявляются как невидимые элементы, исключения или ошибочно отображаемые пиксели. Чтобы исправить это, Android дает вам возможность включить или отключить аппаратное ускорение на следующих уровнях: Application, Мероприятия, Окно, Вид

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

Надеюсь, что это поможет