데이터 바인딩의 가장 중요한 기능 중 하나가 관찰성(Observability)입니다.
데이터 바인딩과 LiveData를 사용하면 생명 주기에 대한 걱정 없이 데이터의 변경에 따른 UI 변경을 자동으로 처리하도록 설정할 수 있습니다.
Observable 인터페이스를 구현한 Observable 필드들과는 달리 LiveData는 생명 주기를 알고 관찰자들에게 데이터를 올바르게 전파합니다.
그래서인지 안드로이드 스튜디오 버전 3.1 이상부터는 Observable 필드의 사용 대신 LiveData를 데이터 바인딩 코드에서 권장하고 있습니다
이렇게 LiveData와 바인딩 클래스를 같이 사용하려면 바인딩 클래스에 LifecycleOwner를 명시해서 생명 주기를 인식하고 이에 따라 LiveData가 반응할 수 있도록 해야 합니다.
위처럼 바인딩 클래스에 LifecycleOwner를 명시했다면, 이제 레이아웃에 선언된 변수를 LiveData로 교체할 차례입니다.
일반적으로는 레이아웃에서 뷰-모델 변수를 선언하고, 뷰-모델이 가진 멤버로 LiveData를 참조하는 것을 권장합니다.
LiveData에서는 원시 타입을 다룰 수 없어 박스 클래스를 제네릭으로 참조합니다.
바인딩 표현식에서 LiveData를 사용하는 경우 바인딩 클래스 내부에서 getValue()를 호출하여 데이터를 참조합니다.
setter 메서드의 추가로 양방향 바인딩의 구현과 LiveData의 사용을 동시에 할 수 있다.
주의해야 할 점은 메서드의 첫째로 메서드의 이름과 바인딩 표현식에서 참조하는 멤버 이름이 일치해야 하고, 둘째로 메서드 매개 변수의 타입이 LiveData의 제네릭 타입과 일치해야 한다.