Производительность Jetpack Compose lazycolumn

#android #kotlin #android-jetpack-compose

#Android #kotlin #android-jetpack-compose

Вопрос:

Я новичок в jetpack compose и изучаю его из code of JetpackCompose Basics, поэтому я нашел в списке create a performant lazy list

Примечание: LazyColumn не перерабатывает своих дочерних RecyclerView элементов. Он выдает new Composables при прокрутке и по-прежнему эффективен, так как эмиссия Composables относительно дешевая по сравнению с созданием экземпляров Android Views.

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

Обновление: если видимых элементов равно 10, поэтому перед тем, как пользователь прокручивает элементы от 0 до 9, они видны и отображаются, теперь пользователь прокрутил вверх, а видимые элементы от 5 до 14, jetpack compose удалил 5 элементов, которые были ранее отображены, и если пользователь прокручивает вниз, онибудет перекомпонирован или jetpack compose сохранит все отображаемые представления в памяти независимо от того, видны они или нет

Ответ №1:

Потому что есть предел определению «дешево», но нет предела тому, насколько большим может быть список. Может быть дешево выводить 100-200 составных файлов (в чем я не уверен, но скажем так ради аргумента). Выводить 10 тыс. из них недешево. Каким может быть список результатов, поддерживаемых базой данных.

Итак, вы все равно не хотите выводить все время. Но может быть относительно дешево выводить все, что пользователь будет разумно прокручивать, потому что никто не переходит к концу списка 10K. Таким образом, это разумный компромисс, основанный на обычном поведении пользователя. Вы потеряете производительность при прокрутке страницы вниз, но процент пользователей, которые это делают, достаточно мал, вам может быть все равно.

Комментарии:

1. хорошо, я понял, не могли бы вы перечитать вопрос, я внес обновление

2. Я думаю, вы не t explained the important part of the questions знаете, насколько дешевым и производительным является создание нового составного файла, отвечая, что основная причина обнаружена, следовательно, недостаток понимания покрывается.