본문 바로가기

Kotlin29

LiveData와 Kotlin의 Flow LiveData와 Flow가 뭔지 정리해보고 어떻게 사용하는 지에 대해 알아본다. 추가로, 두 가지가 유사하면서도 다른 점들이 있기에 주요한 차이점과 적절한 사용법도 알아보자. LiveData & Flow LiveData는 안드로이드 앱 개발에서 일반적인 작업인 데이터 전송의 한 방법이다. Kotlin Flow도 데이터를 전송하는 것이며 비동기로 전송할 수 있는 기능이 있다. 두 가지 방법 모두 기존의 전통적인 문제를 극복하기 위해 설계되었으며, 장점과 더불어 한계점도 있다. LiveData 관찰 가능한 데이터 홀더 클래스, 다른 안드로이드 컴포넌트들(activity, fragment, service)에 의해 관찰될 수 있는 데이터들의 집합이라고 생각하면 된다. 관찰 가능한 다른 일반 클래스들과 다른 점.. 2021. 11. 14.
Kotlin Result 에러 핸들링 Result와 runCatching은 오류를 처리할 수 있는 방법 중에 하나다. Result는 동작이 성공하든 실패하든 동작의 결과를 캡슐화해서 나중에 처리될 수 있도록 하는 것이 목적이다. 이 Result와 함께 사용할 수 있는 다양한 기능들이 표준 라이브러리에 추가되었다. Kotlin 1.3부터는 예외 처리를 위해 runCatching이라는 inline function도 제공된다. 함수형 프로그래밍 방식의 에러 처리도 가능하며 Coroutines에서 에러 처리를 할 때 구글이 권장하는 방식이기도 하다. Result와 runCatching 먼저 Result를 보면 이런 형태로 생겼다. runCatching은 이런 식으로 생겼다. Result와 runCatching을 보면 대충 어떤 느낌으로 동작할지는 .. 2021. 11. 7.
Android LiveData setValue vs postValue LiveData(MutableLiveData)에서 setValue()와 postValue()를 사용하는 경우를 종종 헷갈려하는 사람들이 있어서 간단하게 정리해두려 한다. LiveData는 일반적으로 DataBinding, ViewModel과 함께 사용한다. 값을 변경하는 두 방법의 차이점과 자신이 개발하고 있는 구조를 제대로 파악하지 못하면 필요할 때 UI 변경이 제대로 발생하지 않을 수 있다. 복잡하거나 어렵지는 않으니 간단하게 확인해두면 된다. setValue() 값을 바로 설정한다. 활성화된 observer가 있는 경우 해당 값이 observer로 dispatch된다. 사용에 있어 주의해야 할 점이 있는데 setValue는 반드시 Main Thread(UI Thread)에서 호출해야 한다. back.. 2021. 10. 21.
Android Room - RxKotlin과 함께 쓰는 방법 지난 포스팅들에서 Room에 대해 배워보고 Coroutine, RxKotlin, LiveData와 함께 사용할 수 있다는 것을 알았다. 최근에 올렸던 Coroutine과 함께 사용하는 방법에 이어서 RxKotlin과 사용하기 위해서 어떻게 해야 하는지, 어떻게 사용하는지에 대해 이번 포스팅에 대해서 알아본다. Dependency Coroutine의 경우와 마찬가지로, Room을 RxKotlin과 함께 사용하기 위해서도 dependency를 추가해줘야 한다. 먼저, 모듈의 build.gradle 파일에 Kotlin annotation plugin을 추가해준다. build.gradle 파일의 상단 부분에 위와 같이 작성하여 플러그인을 추가한다. dependencies block에는 위의 세 줄을 추가해주기만.. 2020. 6. 10.
Kotlin (코틀린) Coroutine의 Flow 결합 방법 Kotlin(코틀린)의 Coroutine(코루틴)에는 Flow라는 것이 있다. Flow를 잘 모른다면 일단 RxKotlin에서의 Observable과 유사하다고 생각하면 된다. 이번 포스팅에서는 이러한 Flow들을 결합해서 사용하는 방법에 대해 정리할 예정이다. Coroutine은 Flow를 결합하기 위해 combine(결합), zip(압축), flattenMerge의 세 가지 연산자를 제공해준다. 이 세 가지에 대해 각각 알아보자. 결합 (Combine) 연산자 먼저 combine 연산자에 대해서 살펴보자. Flow의 extension 함수인데 결합을 위해 다른 Flow를 인자로 받는다. 두 번째 인자로는 람다 suspend 함수를 받는데, 두 Flow (기존 Flow와 인자로 준 Flow)에서 emi.. 2020. 6. 8.
Android Room - Coroutines(코루틴)과 같이 쓰는 법 이번 포스팅에서는 지난 번에 설명한 Room과 Coroutine을 함께 사용하는 방법에 대해 알아 본다. Room은 2.1 버전부터 Coroutine을 지원해주고 있다. DAO 메소드를 suspend로 선언하여 사용할 수 있다. build.gradle 파일 수정 Room만 사용한다고 Coroutine 지원을 바로 받을 수 있는 것은 아니다. Room과 Coroutine을 함께 사용하려면 build.gradle 파일에서 Room 버전을 2.1 이상으로 지정하고 Coroutine 지원 dependency도 추가해주어야 한다. 위와 같은 방식으로 build.gradle에 coroutine을 위한 room dependency를 추가해주면 된다. suspend DAO method 선언 DAO 선언시 suspend.. 2020. 6. 6.