Mastering Kotlin Coroutines for Android Development

Learn how to implement 12+ of the most common use cases for Kotlin Coroutines on Android

Google recommends Kotlin Coroutines as the preferred solution for asynchronous programming on Android. Sooner or later, probably every  Android developer will get in touch with them. This course will provide you with a deep understanding of Kotlin Coroutines and shows how to implement 12+ of the most common use cases for Android applications.

What you’ll learn

  • How to implement 12+ of the most common use cases for Kotlin Coroutines on Android..
  • Get a deep understanding of Kotlin Coroutines (Suspend Functions, Coroutine Builders, blocking vs suspending, Coroutines vs Threads)..
  • Learn advanced Concepts (Structured Concurrency, Coroutine Scopes and Contexts, internal workings).
  • Understand the advantages of using Coroutines over Callbacks or RxJava..
  • How to perform network requests with Retrofit sequentially and concurrently..
  • How to use Room together with Coroutines..
  • How to do background processing with Coroutines..
  • How to appropriately deal with exceptions..
  • How to write Unit Tests for coroutine-based implementations..
  • How to implement Timeouts and Retries..

Course Content

  • Introduction –> 3 lectures • 21min.
  • Different Approaches for Asynchronous Programming –> 8 lectures • 54min.
  • Coroutine Fundamentals –> 9 lectures • 48min.
  • Performing Network Requests sequentially –> 8 lectures • 35min.
  • Performing Network Requests concurrently –> 9 lectures • 42min.
  • Higher-Order Functions –> 7 lectures • 32min.
  • Using Room with Coroutines –> 4 lectures • 19min.
  • Background Processing with Coroutines –> 11 lectures • 53min.
  • Structured Concurrency and Coroutine Scopes –> 15 lectures • 1hr 30min.
  • Cancellation –> 5 lectures • 21min.

Mastering Kotlin Coroutines for Android Development

Requirements

  • No prior knowledge about Kotlin Coroutines needed, however you should be familiar with the Basics of Kotlin and Android, as well as some Android Jetpack Components (ViewModels, LiveData, Room) and Retrofit..

Google recommends Kotlin Coroutines as the preferred solution for asynchronous programming on Android. Sooner or later, probably every  Android developer will get in touch with them. This course will provide you with a deep understanding of Kotlin Coroutines and shows how to implement 12+ of the most common use cases for Android applications.

 

At first, we will take a detailed look at the advantages of Kotlin Coroutines over other approaches for asynchronous programming, like RxJava and Callbacks.

 

Then, we will talk about some theoretical fundamentals. These include:

  • Routines vs. Coroutines
  • Suspend Functions
  • Coroutines vs. Threads
  • Blocking vs. Suspending
  • Multithreaded Coroutines
  • Internal workings

     

Next, we will implement some of the most common use cases for Kotlin Coroutines in Android applications. These include:

  • Performing network requests with Retrofit sequentially and concurrently
  • Implementing Timeouts and Retries
  • Using Room with Coroutines
  • Performing background processing with Coroutines
  • Continuing Coroutine execution even when the user leaves the screen.

     

To improve your learning experience, this course also challenges you with several exercises.

 

Learning Coroutines can be overwhelming because you need to learn a lot of new concepts. However, we are going to start simple and as our use cases will get more and more complex, we will learn about new concepts step-by-step. These new concepts are:

  • Coroutine Builders (launch, async, runBlocking)
  • Coroutine Context
  • Coroutine Dispatchers
  • Structured Concurrency
  • Coroutine Scopes (viewModelScope, lifecycleScope, GlobalScope)
  • Jobs and SupervisorJobs
  • scoping functions (coroutineScope{} and supervisorScope{})
  • Cooperative Cancellation
  • Non-Cancellable Code

 

We will also make a deep dive into Exception Handling and discuss concepts like:

  • exception handling with try/catch
  • exception handling with CoroutineExceptionHandlers
  • when to use try/catch and when to use a CoroutineExceptionHandler
  • exception handling in Coroutines started with launch and async
  • exception handling specifics of scoping functions coroutineScope{} and supervisorScope{}

 

Unit Tests are very important for every codebase. In the final section of the course we will write unit tests for most of the coroutine-based use cases we implemented earlier. We will discuss concepts like

  • TestCoroutineDispatcher
  • creating a JUnit4 Rule for testing coroutine-based code
  • runBlockingTest{} Coroutine Builder
  • virtual time
  • Testing sequential and concurrent execution
  • TestCoroutineScope

 

By the end of this course, you will have a fundamental understanding of Kotlin Coroutines and are able to write readable and maintainable, asynchronous and multithreaded Android Applications.

Get Tutorial