stateflow
-
StateFlow 값의 원시성을 보장하는 방법Android 2023. 3. 5. 13:44
안녕하세요. 메쉬업 안드로이드 11기 이두한입니다. 이번엔 Android Weekly에도 소개된 Atomic on updates with MutableStateFlow포스팅에 나와있는 StateFlow가 갖고 있는 값에 다수의 코루틴이 동시 접근하였을 경우 발생하는 문제와 해결방법에 대해 알아보도록 하겠습니다. StateFlow는 MVVM 패턴에서 UI 상태를 유지하고 내보내는데 일반적으로 사용됩니다. 예를 들어 뷰 모델 안에서 ViewState라는 데이터 클래스가 뷰의 상태를 나타내고 이이 관리하기 위해 StateFlow를 사용한다면 아래와 같이 나타낼 수 있을 겁니다. Update ui state using StateFlow class MainViewModel: ViewModel(){ private ..
-
Coroutine Flow,Rx처럼 써보자!Android 2023. 3. 5. 13:35
Coroutine Flow, Rx처럼 써보자! 때는 바야흐로 2020년 말 안드로이드 공식 문서를 보거나 새로 추가된 paging3를 도입하던 시기에 구글에서 Coroutine을 적극적으로 지원한다는 생각이 들었습니다. 공식 문서에 비동기 관련 샘플 코드들의 첫 장이 Coroutine인 점도 그렇고 paging3를 도입할 때에 Rx보다 Coroutine으로의 구현이 상대적으로 더 쉬워보였습니다. 이러한 생각으로 진행중이던 프로젝트에 Coroutine을 도입해 보았습니다. Rx 개발자가 Coroutine Flow를 도입하면서 불편했던 점 및 이를 해결한 과정에 대해 말씀드리려 합니다. 2021년 2월 StateFlow, SharedFlow 가 코틀린에 추가 되기 전 Rx의 Subject 클래스나 Proce..
-
LiveData vs StateFlow, Why we should use the 'StateFlow'?Android 2023. 3. 5. 12:46
LiveData 는 Lifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발 시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이브러리입니다. LiveData 는 옵서버 패턴을 활용하여 구현되었으며, 관찰 가능한 일반 클래스인 ObservableXXX 클래스와는 달리 LiveData 는 생명주기의 변화를 인식합니다. 즉, Activity, Fragment, Service 등 안드로이드 컴포넌트의 생명 주기 인식을 통해 Active 상태에 있는 컴포넌트에서만 업데이트합니다. LiveData 를 사용했을 때 장점은 아래와 같습니다. Activity 와 Fragment 는 LiveData 객체를 안전하게 관찰할 수 있고, 생명 주기가..
-
Replace LiveData, SingleLiveEvent with Coroutines!Android 2023. 2. 14. 14:34
Flow 와 Channel 의 작고 귀여운 기능 안녕하세요. Mash-up Android 10기 정세희라고 합니다. 요즘 쭉쭉 상승세인 Coroutine 의 귀여운 아이들인 Flow 와 Channel 의 간단한 기능 하나를 소개하기 위해 나타나게 되었습니다 : ) 안드로이드에서도 이제 별도의 라이브러리 추가 없이 Coroutine을 기본적으로 사용할 수 있습니다. 비동기 라이브러리의 대표적인 Rxjava를 뒤쫓고 있는 무서운 녀석이죠. 앞서 매쉬업 안드로이드 블로그에서 기본적인 Coroutine 동작방법에 대해서 설명했다면, 이번 글에서는 비동기적으로 사용하는 방법 외에 MVVM 아키텍처에서 자주 쓰이는 LiveData 와 SingleLiveEvent 를 Corouitne의 Flow, Channel 로 ..