LiveData - 2

송규빈·2022년 6월 14일
0

❗️ '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 공부한 내용을 정리한 글입니다.

데이터 바인딩과 LiveData의 사용

데이터 바인딩의 가장 중요한 기능 중 하나가 관찰성(Observability)입니다.
데이터 바인딩과 LiveData를 사용하면 생명 주기에 대한 걱정 없이 데이터의 변경에 따른 UI 변경을 자동으로 처리하도록 설정할 수 있습니다.

Observable 필드를 LiveData로 마이그레이션하기

Observable 인터페이스를 구현한 Observable 필드들과는 달리 LiveData는 생명 주기를 알고 관찰자들에게 데이터를 올바르게 전파합니다.
그래서인지 안드로이드 스튜디오 버전 3.1 이상부터는 Observable 필드의 사용 대신 LiveData를 데이터 바인딩 코드에서 권장하고 있습니다

이렇게 LiveData와 바인딩 클래스를 같이 사용하려면 바인딩 클래스에 LifecycleOwner를 명시해서 생명 주기를 인식하고 이에 따라 LiveData가 반응할 수 있도록 해야 합니다.

위처럼 바인딩 클래스에 LifecycleOwner를 명시했다면, 이제 레이아웃에 선언된 변수를 LiveData로 교체할 차례입니다.

일반적으로는 레이아웃에서 뷰-모델 변수를 선언하고, 뷰-모델이 가진 멤버로 LiveData를 참조하는 것을 권장합니다.
LiveData에서는 원시 타입을 다룰 수 없어 박스 클래스를 제네릭으로 참조합니다.
바인딩 표현식에서 LiveData를 사용하는 경우 바인딩 클래스 내부에서 getValue()를 호출하여 데이터를 참조합니다.

LiveData를 사용하면서 양방향 바인딩 사용하기

setter 메서드의 추가로 양방향 바인딩의 구현과 LiveData의 사용을 동시에 할 수 있다.
주의해야 할 점은 메서드의 첫째로 메서드의 이름과 바인딩 표현식에서 참조하는 멤버 이름이 일치해야 하고, 둘째로 메서드 매개 변수의 타입이 LiveData의 제네릭 타입과 일치해야 한다.

profile
🚀 상상을 좋아하는 개발자

0개의 댓글