Kotlin Coroutines Exception 영향도 알아보기

이전 글에서 Kotlin coroutines을 제어할 수 있는 Job에 대해 알아보았다. 기본적인 Job 초기화 후 사용한데 어떤 방법이 좋을까?

먼저 이전 글에서 초기화 때 적용했던 방법을 다시 살펴보자.

val job = Job()
CoroutineScope(Dispatchers.Default + job).launch {
  // ...
}

이 코드는 CoroutineScope 초기화 시 Job을 함께 초기화하여 사용한다.(+를 이용하여 초기화한다.) 이렇게 초기화 함에 따라 CoroutineScope 사용 시 하위 child 모두 이 job의 영향을 받게 설계하였다.

Read More

Kotlin Coroutines의 Job 동작을 알아보자

Kotlin Coroutines을 컨트롤하기 위한 Job을 제공해준다. 이 Job은 N 개의 coroutines의 동작을 제어할 수도 있으며, 하나의 coroutines 동작을 제어할 수도 있다.

먼저 Job이 어떤 것인지 알아보고, exception 발생 케이스를 함께 알아보겠다.

Read More

Android에서 사용하는 CoroutineScope을 알아보자

Kotlin coroutines은 기존 Java Thread, 안드로이드에서 제공하는 AsyncTask, ReactiveX 패러다임을 일부 구현한 RxJava를 대신할 수 있는 Asynchronous/Non-blocking programming을 제공한다.

참고로 기존에 작성하였던 글에서 Kotlin Coroutines을 알아보고, 안드로이드에 library 적용하기 Java Thread/AsyncTask/RxJava 활용에 대한 내용이 포함되어 있다.

coroutines은 사용하기 쉽고, 적용하기도 쉽다.

우선 안드로이드 환경에서 코틀린을 적용하는 방법은 간단하다.

Github의 kotlinx.coroutines에서 Apache License, Version 2.0으로 공개되어 있는 coroutines 소스를 확인할 수 있다.

Read More

RxJava 2.x 사용 시 발생하는 UndeliverableException 해결 방법은?

RxJava 2.x 사용 시 발생 가능한 버그를 소개하고, 해결 방법을 소개한다.

RxJava 2.x 버전으로 올리고 나서 UndeliverableException이 발생하는 경우가 생겼다.

이해를 돕기 위해 오류 코드를 그대로 추가하고, 이 오류가 왜 발생하는지와 어떻게 해결할지를 정리한다.

Read More

RxJava와 Kotlin Coroutines 비교해보기

RxJava는 안드로이드 개발에 없어서는 안 될 존재가 되었다. 많은 개발자들이 사용하고 있으며, 구글도 RxJava 관련한 API를 제공한다. 하지만 RxJava를 이해하기까지 상당한 시간이 걸린다.

다음 코드를 이해하려면 과연 몇 개의 정보를 이해하고 있어야 할까?

Flowable.range(0, 10)
        .observeOn(Schedulers.io())
        .subscribeOn(Schedulers.io())
        .map {
            it + 1
        }
        .filter {
            it > 4
        }
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
                {
                    println(it)
                    // UI 에서 처리
                },
                {
                    it.printStackTrace()
                    // 오류 처리
                }
        )

Read More