Jetpack compose - это хорошая идея бросать все элементы в LazyColumn?
в настоящее время у меня есть экран, на котором
LinearLayout как root
- просмотрщик
- TextView
- Recyclerview с элементом textview
- какой-то другой макет
в этом случае, какой вариант лучше выбрать при переходе на сочинение с точки зрения производительности?
А
Столбец как корень
- ViewpagerComposable()
- TextComposable()
- LazyColumn {элементы (список) {TextComposable (it)}}
- некоторые другие составные
или
B
LazyColumn как root
- элемент {ViewpagerComposable()}
- элемент {TextComposable()}
- items(список) {TextComposable (it)}
- элемент {другой составной элемент}
2 ответа
Что касается производительности, вы видите, что ленивые элементы уничтожаются, как только они покидают композицию (смахивают с экрана). Следовательно, если у вас есть элементы, которые выполняют битовую загрузку, например, извлекают некоторые данные из Интернета или отображают изображение, загруженное из внутренних ресурсов, вся эта выборка будет повторно выполнена при повторном входе. Хотя кеширование будет выполняться автоматически, поэтому вам не нужно беспокоиться о том, что тяжелые операции будут повторно выполнены, но выборка будет иметь место, даже если это будет из кеша. Поэтому, если нет необходимости делать содержимое прокручиваемым, и если это так, если содержимого не слишком много, вместо этого целесообразно использовать Column.
LazyColumn
это просто быстрая замена RecyclerView. В своем обычном приложении для Android вы бы не использовали RecyclerView для таких вещей, не так ли? Просто используйте ту же концепцию, поскольку она предлагает ту же производительность, что и recyclerview.
Краткий ответ: это не имеет большого значения, влияние на производительность, если оно есть, будет незначительным. Я бы, вероятно, выбрал столбец в этом сценарии, но это полностью зависит от вашего удобства.
Это не вопрос производительности. Во всех случаях будет примерно одинаково.
Если вы уверены, что все элементы умещаются на экране, вы можете использовать столбец с простым
for
внутри.
Если у вас их больше, в случае A только предметы изнутри
LazyColumn
будут прокручиваться.
А в случае B все элементы можно будет прокручивать.
Так что это зависит от того, какой макет вы хотите получить.