Прискорбный профиль рендеринга GPU только с мигающим курсором - PullRequest
0 голосов
/ 03 января 2019

Это проблема, которая поразила меня в замешательстве. Я профилировал приложение, которое я разрабатываю, и заметил, что всякий раз, когда я прекращал прокручивать RecyclerView, профиль GPU начинал обвинять ужасную статистику. Я не мог понять, почему это происходит, на экране ничего не обновлялось, пока я не заметил, что что-то меняется за графиком профиля графического процессора в синхронизации с обновлением графика.

Это был курсор, мигающий в представлении EditText.

Я не мог поверить, что я разработал приложение, которое будет вести себя так ужасно, только когда мигает курсор, поэтому я исследовал другие приложения, приложения Google и обнаружил, что проблема присутствует везде и не ограничивается моим приложением. .

Ниже приведен снимок экрана с мигающим курсором в окне поиска официального приложения Gmail.

enter image description here

Как видите, профиль графического процессора недопустим.

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

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

1 Ответ

0 голосов
/ 03 января 2019

Я думаю, что о вашей проблеме сообщили здесь: Мигание курсора TextView GPU делает необычным , так как описание соответствует вашему графику пламени.

Инженер Google, который закрыл проблему как работает как задумано указано:

Это на самом деле работает так, как задумано - поскольку ЦП находится на очень низкой нагрузке (анимация не выполняется или какая-либо работа выполняется), он работает на очень низком уровнечастота и редкие кадры, которые он выдвигает, отображаются очень медленно.Это нормально - видимого рывка не происходит, поскольку непрерывные кадры не создаются.Видимый рывок может произойти только тогда, когда прервана непрерывность движения.Если бы было движение, ЦП заработал бы, и кадры рендерились бы намного быстрее.

Вы увидите то же самое, когда музыкальные приложения обновляют свои скрубберы только раз в секунду, а не со скоростью 60 кадров в секунду.Кадры занимают много времени, но это значительно экономит время автономной работы.

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

Какрендеринг текста сложен, это может помочь прочитать Font Renderer для Android от Romain Guy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...