-
Android) LiveData 언더바 변수 의미 - Backing PropertyAndroid 2020. 12. 14. 17:13
LiveData를 사용하여 안드로이드 개발을 하다보면 아래 코드와 같이
언더바로 시작하는 변수와 그렇지 않은 변수가 쌍으로 붙어있는 코드를 볼 수 있습니다.
MutableLiveData 와 LiveData ?
- MutableLiveData는 ViewModel 안에서 해당 데이터가 수정 될 수 있습니다.
- LiveData는 읽을 수 있지만, 변경 되지 않습니다.
- LiveData는 ViewModel 외부에서 데이터를 읽을 수 있으나, 수정되지 않게 하려면 LiveData를 통해 외부에 해당 데이터를 제공 해야 합니다.
이러한 이유는 외부에서 Livedata를 변경하지 못하게 하고, 내부에서는 변경이 가능하게 하기 위한 구현이 목적입니다.
이것은 "캡슐화"와 같은 방법입니다. 오브젝트의 필드 중 일부에 대한 직접 접근을 제한하는 방법입니다.
해당 방법을 사용하기 위해 Kotlin Backing Property를 사용해야 합니다.
private val _useLiveData = MutableLiveData<User>() val userLiveData: LiveData<User>
위와 같이 LiveData를 선언 하면, 초기화 에러가 발생합니다. 그 이유는 더 이상 데이터를 set 해줄 수 없기 때문입니다.
그래서 아래와 같이 get()을 오버라이드 해서 _userLiveData를 리턴 해줘야 합니다.
val userLiveData: LiveData<User> get() = _useLiveData
LiveData는 이제 값을 세팅하지 못하기 때문에 get() 메소드를 호출 시 _userLiveData를 리턴 합니다.
MutableLiveData인 _userLiveData를 리턴 해도 이제 LiveData는 값을 설정하지 못하기 때문에 읽는 것만 가능합니다.
반응형'Android' 카테고리의 다른 글
Android) View Binding 알아보기, 바인딩 비교 (0) 2020.12.27 Android) SavedStateHandle 알아보기 (0) 2020.12.22 Android) Mockito로 Unit Test 작성해보기 - Kotlin (0) 2020.12.02 앱 비교) 하이브리드 앱 vs 네이티브 앱 vs 모바일 웹앱 vs 크로스 플랫폼 앱 (0) 2020.12.02 Android) 안드로이드 최신 소식/기술 받아보기 (0) 2020.12.01