Callback 이벤트로 받은 데이터를 Coroutines의 Flow를 활용한 방법에 대해서 소개했었다. 최근 Medium에서 Channel을 사용한 방법을 소개한 글이 있어 Channel을 사용하는 방법을 정리해보려고 한다. 여기에서 사용한 샘플은 단순한 테스트를 한 것이고, 네트워크가 포함되어 있지 않다. 다만 단순한 테스트로도 발생하는 문제가 있어 정리해두려고 한다. 참고한 글은 Kotlin Channel and WebSocket Complete Example (Also Why Not Flow)이다. 이 글에 도움 될 문서는 아래와 같다. Channels Callback으로 받은 데이터를 Coroutines에서 활용하는 방법! Flow 활용 이 글에서 알아볼 내용 Flow와 Channel의 간단한 ..
runBlocking과 GlobalScope에 대해서 알아보았다. Kotlin Coroutines의 runBlocking은 언제 써야 할까? 잘 알고 활용하자! Kotlin Coroutines의 GlobalScope을 어떻게 사용할 수 있을까? - 사실 추천하지 않는다. 이 두 가지의 코루틴은 이유 없이 사용해서는 안 되는 것들이다. 그럼 사용할 수 있는 건 가장 기본적인 CoroutineScope이 남는다. 필자가 한참 코루틴을 학습할 때 적었던 내용에 CoroutineScope의 활용 방법은 이미 다양하게 나온다. Android에서 사용하는 CoroutineScope을 알아보자 이 글에서는 CoroutineScope의 사용 방법을 좀 더 알아보고(MainScope, CoroutineScope), 무한..
코루틴의 runBlocking에 대해서 이야기했다. Kotlin Coroutines의 runBlocking은 언제 써야 할까? 잘 알고 활용하자! 결국 잘 알고 사용하는 건 문제가 없다. 역시나 잘 못 알고 사용하는 경우라면 사실 사용치 않는 게 맞는다고 생각한다. 이번 글은 코루틴 관련 2 번째 글로 GlobalScope에 대해서 알아보려고 한다. 이 역시 Android 개발에서는 lifecycle과 관련이 깊다. 일반적인 서버나 웹에서도 역시 GlobalScope을 무작정 사용하는 건 맞지 않을 것이다. CoroutineScope은 각각의 라이프 사이클을 별도로 가지고 종료를 할 수 있는 반면 GlobalScope은 싱글톤으로 만들어져있어, 잘못 활용한다면 프로그램 전체에 악영향을 미칠 수 있다. 싱..
코루틴을 활용하다 보면 문서에 나오는 것 외에도 다양하게 활용될 수 있다. 하지만 모든 Scope이 정답은 아니고, 상황에 맞는 게 있다. 안드로이드에서는 당연하게도 CoroutineScope을 사용해 lifecycle을 따르도록 개발하는 걸 권장하는데 onDestroy 시점에 cancel() 할 수 있는 형태로 만들어져 있다. Lifecycle을 따르는 건 매우 자연스럽다. 이 글에서는 다양하게 사용할 수 있는 Scope 중 먼저 runBlocking을 알아본다. 이 글에서 알아볼 내용 runBlocking을 UI에서 사용해도 괜찮을까? runBlocking의 내부 코드를 알아보자. 그럼 runBlocking은 언제 쓰는 게 좋을까? 자세한 내용은 이어 보기 Kotlin Coroutines의 runBl..
안드로이드의 익숙한 BaseXXX class를 알아보고, 설계의 중요성을 알아보자. | I’m an Android Developer. thdev.tech Java에서 상속은 매우 익숙하다. 앞에서 적은 상속! 악마의 속삭임, 그 속에 숨겨진 문제점, Kotlin에서는 Delegation을 활용해 보자. 글을 보면 알겠지만 상속에는 숨겨진 문제점이 있다. 상속을 지키리 면 open을 통해 열고 닫고를 잘해야 하고, 설계를 잘 해야 하고 주석도 잘 달아주는 게 좋다. 처음의 의도와 달라질 수 있는 환경이라면 상속보다는 다른 방법을 활용하는 게 좋다. 이 글에서는 Android에서 흔하게 작성하는 class BaseXXX를 알아보고 좀 더 좋은 접근 방법을 알아보려고 한다. 이 글에서 알아볼 내용 안드로이드에..
Kotlin은 class 안에 class(중첩 클래스)를 정의할 때 기본 Nested classes 룰을 사용한다. 자세한 내용은 이어보기를 통해 확인해주세요. https://thdev.tech/kotlin/2020/11/17/kotlin_effective_11/Kotlin과 Java의 Nested and Inner Classes를 알아보고, Nested classes를 왜 사용해야 하는지 알아본다. |I’m an Android Developer.thdev.tech inner classes가 아닌 이유를 찾기엔 자바를 이해하는 편이 가장 좋다. 이 글에서는 Java의 inner classes와 Nested classes를 통해 코틀린의 Nested classes 이유를 알아본다. 이 글에서 알아볼 내용J..

올해도 어김없이 나온 안드로이드 11 Preview. 작년부터 안드로이드는 디저트 이름 대신 10/11 등의 OS 번호를 표기키로 했고, 올 하반기에 나올 안드로이드는 11이다. 안드로이드 11은 2월에 개발자 버전으로 최초 공개되었고 벌써 7월 베타 2에 이른다. 필자는 메인 폰인 Pixel 4 XL에 안드로이드 11 Preview를 올려 사용 중이다. 타임라인상 8월 final 버전에 해당하는 Beta 3가 나올 예정이고, 빠르면 8월 말에서 9월 초에 정식 버전이 배포될 것 같다. 언제나 그렇듯 초기 대상이던 "Pixel 4 / 4 XL, Pixel 3a / 3a XL, Pixel 3 / 3 XL, or Pixel 2 / 2 XL"에서 우선적으로 Android 11 정식을 만날 수 있다. -----..
다음 글은 전체 내용을 공유하지 않고, 새로운 블로그로 링크를 제공하는 글입니다. 이어보기 : https://thdev.tech/android/2019/11/30/RxJava-Corotuines-01/ 약 1년 전 Coroutines을 처음 다루었고, RxJava에 대해서 조금 익숙하게 사용할 시점에 작성했던 글이다. RxJava와 Kotlin Coroutines 비교해보기 - 링크 그간 지원은 다음과 같다. 2019 Google I/O에서 Coroutines을 적극 도입하기로 하였고, ViewModel/LiveData 등을 위한 CoroutineScope을 제공하고, Coroutines에서도 RxJava Cold Observable과 유사한 Flow를 제공한다. Kotlin/Coroutines은 계속 ..