728x90

livedata

    [Android] Kotlin에서 LiveData의 null 허용 개선 - NonNullLiveData

    MVVM 패턴에서 LiveData는 반응형 프로그래밍으로써 매우 인기 있고 간단한 접근 방식입니다. Google I/O 2017에서 Kotlin을 공식 언어로 발표함과 동시에 AAC를 발표했지만 LiveData는 Java로 짜인 라이브러리입니다. 이 때문에 Kotlin에서 사용할 때는 몇 가지 문제점이 있습니다. 문제점 Kotlin에서는 null에 대한 체크가 엄격합니다. String과 String?의 차이는 Kotlin을 공부하신 분들이라면 다들 아실 거라고 생각합니다. 아래의 코드에서 이와 관련된 LiveData의 문제점이 있습니다. val sampleLiveData: LiveData = ... // nullable val currentValue = sampleLiveData.value sampleL..

    [Android] LiveData setValue() vs postValue()

    최근에 프로젝트에서 백그라운드 쓰레드에서 콜백 함수를 호출해 LiveData의 값을 변경해줘야 하는 로직이 있었다. 이때, setValue() 함수를 호출해 값을 변경해줬는데, 값이 변경되지 않는 이슈가 있었다. 찾아보니 setValue()를 사용한 게 문제였고, setValue()와 postValue()의 차이점에 대해 다시 한번 공부하게 되었고 이 글을 쓰게 되었다. LiveData는 Android Architecture Components(AAC)에서 제공하는 라이브러리 중 하나다. MVVM 패턴을 적용한다면 ViewModel, DataBinding과 함께 많이 사용하는 라이브러리다. LiveData는 Observer 패턴을 따르며 데이터의 변경이 일어날 때마다 콜백을 받아 원하는 동작을 실행할 수..

    [Android] LiveData 변형하기 (Transformations)

    안드로이드 미니 프로젝트를 진행하며 겪은 삽질과 거기서 배운 내용을 정리해보고자 한다. 내가 겪은 문제점은 다음과 같다. 뷰에서 DatePicker로 날짜를 선택하면, 선택된 날짜에 해당하는 정보들을 RoomDatabase에서 찾아 리스트로 표시해준다. 날짜에 해당하는 정보들은 LiveData로 묶어서 Observer를 걸어주었고, 날짜가 선택되면 쿼리를 날려서 LiveData 안의 value 값을 업데이트해주면 되었다. 하지만 생각했던대로 흘러가지 않았고, LiveData 안의 value 값을 업데이트해주기 위해 이것저것 찾아본 결과 Transformations이란 것을 알게 되었다. Transformations란? Transformations는 단어 뜻 그 자체로 LiveData를 변형한다고 생각하면..

    [Android] Jetpack LiveData란?

    LiveData란? LiveData는 데이터를 저장하고 변화를 관찰 할 수 있는 객체이다. UI객체는 LiveData에 옵저버를 등록할 수 있으며 데이터가 변경될 때 UI를 변경할 수 있다. 예를 들어, 아래처럼 LiveData를 생성하고 옵저버를 등록할 수 있다. 데이터가 변경되면 옵저버에게 전달된다. val elapsedTime = LiveData elapsedTime.observe(this, Observer { time -> tv_timer.text = time.toString() }) LiveData는 LifecycleOwner의 상태가 STARTED와 RESUMED로 활성화 상태일 때만 옵저버에게 데이터 변화를 알려주고, DESTROYED로 변경되면 LiveData도 자동으로 소멸된다. Live..

728x90