여러분,,,
LazyColumn/Row
가 꼭 같은 item을 사용할 때만 이득이 있다는 게 아니라는 사실을 제가 알아왔습니다,,,(혹시 다들 알고 계셨나요,,?)
If you need to display a large number of items (or a list of an unknown length), using a layout such as
Column
can cause performance issues, since all the items will be composed and laid out whether or not they are visible.
컨텐츠 길이를 알 수 없을 때 단순히 Column/Row
를 활용해 화면을 구성하면 모든 것이 한 번에 구성되기 때문에 성능적인 이슈가 발생할 수 있습니다.
그렇기 때문에 Lazy component
가 등장합니다! 이는 위 글에서도 알 수 있듯이 화면에서 보여지는 부분만 composed가 되어집니다.
따라서 LazyColumn/Row는 꼭 동일한 아이템만을 효율적으로 배치하기 위해 사용하는 것이 아니라네요! (흑, 저만 잘못 알고있어나요? 😭 머쓱) 컨텐츠 길이가 길어진다면 Column/Row를 scrollable
하게 사용하는 것보다 LazyColumn/Row
를 사용하는 것이 성능적으로 이득이 있습니다!
여러분 LazyColumn/Row가 아이템을 재사용할까요? 다들 어떻게 생각하시나요! 어떻게 알고 계시나요!!!!!!!!!!(스스로 답변하고 다음 부분을 읽어주세요. Yes/No)
결론은 재사용하지 않습니다.
충격적,,, 저는 몰랐는데요. LazyColumn/Row는 화면에 있는 아이템만 구성하고 화면을 떠나는 즉시 해당 컴포저블을 폐기
합니다. 그리고 컴포즈는 새로운 컴포저블 생성을 효율적인 방식
으로 처리하기 때문에 아이템을 재사용할 필요가 없다네요..
엇?? 그렇다면 LazyColumn/Row에서의 재사용
은 어떤 것을 말하는 걸까요? 공식 문서를 잠깐 참고봅시다!
다들 composition이라는 개념을 알고 계시죠? composition 단계에서는 composable 함수를 실행하고 UI 트리를 구성합니다.
따라서 이렇게 생성한 UI 트리를 재사용할 수 있는데요. 그 방법은 contentType
을 지정해서 입니다.