Мое приложение меняет свойства некоторых действительно простых представлений (поворот, перевод) на кадр. Я использовал systrace, как рекомендовал статьи производительности Android, чтобы проверить, не удалял ли я кадры.Снижение производительности анимации Android, когда устройство остается неподвижным, но коснулось
Что-то действительно неожиданное подошло. Когда устройство стояло неподвижно (даже если я коснулся экрана), загрузка процессора была выше, появились предупреждения о систебре, а красная часть профилирования рендеринга GPU была длиннее. Когда я вращался или быстро встряхивал устройство, все было в порядке.
Ниже приведены ссылки на результаты. Shake
- это когда я вращал устройства очень быстро, no_shake
- это когда он остался сидеть на моем столе.
Я сделал очень простое тестовое приложение, которое использует анимацию перевода: source code.
Глядя на переломе Systrace, где частота кадров гладкая, то почему HW_VSYNC_0 и HW_VSYNC_ON_0 линии нет данных? Как я могу прочитать частоту процессора (я включил опцию при захвате трассировки).
Что касается проблемы, моя теория заключалась в том, что устройство может снизить частоту процессора. Как я могу прочитать это в systrace? Я использовал стороннее приложение для проверки этой гипотезы, и это верно, как показано ниже. Итак, что я могу сделать, чтобы избежать этой проблемы?
Почему устройство делает это? Сначала я подумал, что устройство использует данные акселерометра, чтобы понять, не используется ли оно, а затем уменьшило частоту процессора. Но, чтобы увеличить частоту процессора, я должен сильно встряхнуть устройство. Держать его, как обычный человек, не будет увеличивать частоту процессора.
Я знаю, что у меня много вопросов, но, прочитав все связанные статьи о графике контура Android, у меня нет идей.
Проблема возникла на Sony Xperia Z3 работает Android 5.1 Проблема была не воспроизводимое на Nexus 5 под управлением Android 6.
Update
Похоже, что проблема производительности вызвана CPU/Дросселирование графического процессора. Это же устройство, Xperia Z3, при запуске Android 4.4, хотя оно уменьшает тактовую частоту, оно работает лучше в соответствии с Systrace. Кроме того, он не увеличивает скорость при встряхивании.
Что касается тряски, требуемого для увеличения скорости процессора, я заметил, что когда я пытаюсь повернуть устройство от портрета к пейзажу или наоборот, тогда увеличение тактового сигнала ЦПУ увеличивается (даже если приложение не меняет ориентацию). Итак, я думаю, что причина, по которой этот жест контролируется, - ускорить возможное изменение ориентации.
[Snapdragon 810 s * ck badly ... вот почему:)] (http://arstechnica.com/gadgets/2015/ 04/in-deep-with-the-snapdragon-810s-heat-problems /) – Selvin
Nexus 5 Snapdragon 800 не имеет этой проблемы. Я не знаю, связана ли эта проблема с версией Android, OEM или чем-то еще. – Petrakeas
может быть, теперь он исправлен (в 6 или более новом ядре) ... я все еще держу ставку на переключение между «большими» и «маленькими» «ядра в snapdragon – Selvin