RxJava to Kotlin Coroutines: End-to-End Feature Migration

Kotlin coroutines are much more than just lightweight threads — they are a new paradigm that helps developers to deal with concurrency in a structured and idiomatic way.

When developing an Android app, one should consider many different things: taking long-running operations off the UI thread, handling lifecycle events, canceling subscriptions, switching back to the UI thread to update the user interface.