Недостаточная задержка рендеринга Android при первом запуске - PullRequest
0 голосов
/ 18 сентября 2018

Я испытываю странное поведение в моем приложении, у меня есть BottomSheetBehavior, и когда пользователь перетаскивает Нижний лист (или, как он программно установлен на Expand), View внутри меняются, постепенно, пропорционально на сумму BottomSheetBehavior slide.

Итак, некоторые View сокращаются, другие расширяются, другие постепенно исчезают, а другие постепенно исчезают (альфа-изменение пропорционально slide).

У меня есть Button, который запускает расширение нижнего листа, и при первом нажатии кнопки наблюдается визуальная задержка анимации View внутри нижнего листа. Но после повторного сворачивания Нижнего листа, в любой другой раз, когда я запускаю exapand, визуальная задержка отсутствует. Это происходит только при первом раскрытии Нижнего листа.

Несмотря на то, что я говорю об «анимации», это используется только как термин, я не использую никаких каркасов анимации, View s и ViewGroup s width, height и alpha меняются при каждом обновлении значения slide, таким образом, пользователь воспринимает анимацию.

Я попытался профилировать расширение Bottom Sheet, и вот что я получил:

GPU Profile 1

Первый большой всплеск - это первое расширение Bottom Sheet. Другие намного меньше и являются последующими расширениями.

Вот еще один пример:

GPU Profile 2

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

Я действительно не могу объяснить это поведение, оптимизирует ли Android Framework View s после первой манипуляции с ними? Как сделать их более совместимыми с рендерингом с помощью графического процессора?

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