성장기록지
data binding이란? 본문
data binding
기존에 viewBinding을 포함한 기술에선
UI 컴포넌트는 Activity나 Fragment에서 코드를 통해 속성을 설정해왔지만,
data binding을 활용한다면 xml파일 내에서 view에 할당할 데이터를 선언할 수 있고,
데이터가 변경되면 view도 갱신되게 된다.
즉 Layout의 Ui 컴포넌트를 데이터에 binding 할 수 있도록 지원하는 라이브러리이다.
data binding의 특징
뷰바인딩은 데이터를 뷰(ui)로만 전달이 가능하지만,
데이터 바인딩을 사용한다면 양방향으로 데이터를 결합시킬 수 있다.
레이아웃에서는 주어진 데이터로 UI를 출력하기에, 데이터만 관리하면 되니 역할분리도 제대로 되어진다!
이러한 장점을 통해 MVVM 패턴을 적용할 때 사용되어진다.
그렇다면 view binding보다 좋은가?
오히려 대부분의 상황에서 뷰 바인딩을 권장한다!
공식문서에서도 다음과 같이 작성되어 있다.
그렇다면 왜 뷰 바인딩을 더 권장하는가?
stackOverFlow의 문서에도 다음과 같은 글이 있다.
글에선 다음과 같은 설명이 있다.
ViewBinding의 주요 장점은 빠르고 효율적이라는 것입니다.
DataBinding과 관련한 오버헤드 및 성능 이슈를 피할 수 있기 때문에 빌드에 시간이 적게 소요됩니다.
요약하자면 data binding은 데이터를 뷰에 바로 바인딩 해야하거나, 양방향 데이터 결합을 원할때에만 사용하고,
뷰를 단순히 참조만 하고 싶을 땐 ViewBinding을 사용하는 것이 성능상 이점을 가져온다고 할 수 있다!
어떻게 MVVM을 구현하는가
mvvm에 대한 자세한 설명은 다음 글을 통해 하겠다.
간략히 설명하자면 mvvm에서는 viewmodel이 view에 대한 참조를 가지면 안된다.
뷰모델에서는 데이터를 제공만 하고 , 갱신하는건 view의 책임이기 때문이다.
(물론 view는 viewmodel에 대한 의존성은 가지고 있어야한다.)
그렇다면 어떻게 뷰모델에서 업데이트가 일어날 때 뷰는 알 수 있을까?
이 때 data binding이 활용되는 것이다.
1. view는 data binding을 통해 사용자 이벤트를 viewmodel에 알린다.
2. 그렇다면 viewmodel에서 이벤트에 따른 데이터 변경이 일어난다. (통신 등을 통해)
3. 변경된 데이터를 data binding을 통해서 view에게 알리게 되는 것이다.
따라서 viewmodel이 view에 대한 직접적인 의존성을 갖지 않더라도,
다양한 인터랙션을 처리하는것이 가능하게 된다.
물론 이 과정에서 viewmodel을 지나 변경된 데이터가 view로 전달되는데 LiveData 등이 사용된다!
'안드로이드 > 안드로이드 지식' 카테고리의 다른 글
Compose Stability란? (0) | 2025.01.20 |
---|---|
안드로이드 MVVM 아키텍쳐란? (0) | 2025.01.13 |
State hoisting 탐구 (재사용성, plain state holder class) (0) | 2025.01.10 |
Compose State와 State hoisting (0) | 2025.01.08 |
Android의 Clean Architecture란? (0) | 2025.01.07 |