Android/Android Jetpack

databinding - 식별 가능한 데이터 개체(observable data objects) 작업

728x90
반응형

Observable fields

 

 

Lifecycle-aware objects

Using StateFlow

class ScheduleViewModel : ViewModel() {

    private val _username = MutableStateFlow<String>("")
    val username: StateFlow<String> = _username

    init {
        viewModelScope.launch {
            _username.value = Repository.loadUserName()
        }
    }
}

 

<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

LiveData를 사용하여 UI에 데이터 변경 알림

LiveData 객체를 데이터 결합 소스로 사용하여 데이터 변경을 UI에 자동으로 알릴 수 있습니다. 
식별 가능한 필드와 같이 Observable을 구현하는 객체와 달리 LiveData 객체는 데이터 변경을 구독하는 관찰자의 수명 주기를 알고 있습니다. 
이 수명 주기를 알면 LiveData 사용의 이점에 설명된 많은 이점을 활용할 수 있습니다. 
Android 스튜디오 버전 3.1 이상에서는 데이터 결합 코드에서 식별 가능한 필드를 LiveData 객체로 바꿀 수 있습니다.

결합 클래스와 함께 LiveData 객체를 사용하려면 수명 주기 소유자를 지정하여 LiveData 객체의 범위를 정의해야 합니다. 
다음 예에서는 결합 클래스를 인스턴스화한 후 활동을 수명 주기 소유자로 지정합니다.

 

 

 

 

참고

https://developer.android.com/topic/libraries/data-binding/observability?hl=ko

https://jngmk.netlify.app/dev/app/2020-05-12-android-data-binding

https://developer.android.com/topic/libraries/data-binding/architecture#livedata

728x90
반응형