목록분류 전체보기 (16)
Shunz Android Dev Note
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnHHxX/btsBbPhjzFE/KfKKu0HHSny35VuUKmVlWk/img.png)
비동기 프로그래밍은 애플리케이션을 개발할 때 Main Thread를 블럭킹하지 않고 시간이 오래 걸리는 작업 (예 : 원격 저장소에서 데이터를 가져오기, I/O 작업) 등 여러 작업을 동시에 수행할 수 있도록 해주는 중요한 테크닉입니다. 코틀린은 Android App 및 Backend 개발을 위해 강력한 언어로서 kotlin coroutine을 통해 비동기 프로그래밍을 탁월하게 지원합니다. 이번 포스팅에서는 비동기 프로그래밍을 쉽게 만드는 kotlin coroutine의 세 가지 필수 기능인 async{}, await, awaitAll의 개념에 대해 알아보겠습니다. 빌더 함수 async {} kotlin coroutine에서 async{}는 새로운 코루틴을 시작하는 코루틴 빌더로, 비동기 연산을 시작한다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/p7ONA/btsA2vLeJZb/Fm2okX4r3Q0yfmHfCxBwzk/img.png)
독자는 Android 앱을 개발하면서 LiveData를 자주 사용 해 보았을것입니다. LiveData는 사용하기 쉽고, UI에 표시하기 위하여 필요한 상태를 옵저빙함에 있어 안전하게 라이프 사이클을 관리 할 수 있도록 도와주는 편리한 툴입니다. 생성하기도 쉽고 업데이트하기도 쉽습니다. 또한 옵저빙하기도 쉽습니다. 그래서 개발자들이 간단한 옵저빙이 필요한 모든 곳에서 사용하는 것일 수 있다고 생각합니다. Presentation(UI) 계층에는 괜찮거나, 클린코드 관점에서의 죄책감도 들지 않고, 해가 되지는 않습니다. 하지만 Domain 이나 Data 계층에서는 더 나은 솔루션이 있습니다. 사실, 이런 주제가 나온 것은 처음이 아닙니다. 블로그 게시글, 샘플 및 책에서 좋은 솔루션으로 제공되는 reposit..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqsSQ3/btsASwcoZXP/LCINdBfhKnCIAKPY82Kb10/img.png)
마지막으로 다루게 될 Flow 타입은 SharedFlow의 하위 항목인 StateFlow입니다. SharedFlow에 대해 자세히 알아보려면 여기서 이전 게시글을 확인해주세요. 이제 StateFlow를 특별하게 만드는 방법에 대하여 알아보겠습니다. 아래 다이어그램을 바로 이해하지 못하더라도 본 게시글을 모두 읽어 보셨다면 충분히 이해 할 수 있을것으로 기대합니다. StateFlow는 특별한 SharedFlow Flow와 SharedFlow의 차이점과는 다르게, SharedFlow와 StateFlow는 매우 많은 공통점이 있습니다. 사실, 특별한 속성들(properties)을 가지는 SharedFlow를 만들어서 독자만의 StateFlow를 만들 수 있습니다. 먼저 replay value를 1로 설정하여 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cu4Bam/btsATW2msEA/U8qH7q7oylc3qahchUvrn1/img.png)
이전 포스팅에서 Flow에 대하여 살펴보았습니다. 이번 포스팅에서는 Flow의 child에 속하는 SharedFlow에 대하여 살펴보려고 합니다. 이 타입은 FRP(Functional Reactive Programming) 스타일로 프로그래밍을 할때 더욱 많은 가능성을 열어줍니다. 이전 포스팅에서 다루었던 많은 내용들이 이 포스팅에서 이어지겠지만, SharedFlow는 Flow와 비교할 때 몇가지 주요 차이점이 있습니다. 아래 다이어그램을 바로 이해하지 못하더라도 본 게시글을 모두 읽어 보았다면 충분히 이해 할 수 있을것으로 기대합니다. Hot Flow 첫 번째이자 가장 중요한 차이점은 SharedFlow가 콜드(cold)가 아니라 핫(hot) 스트림이라는 점입니다. 이는 SharedFlow에서 컬렉션이..