Kotlin Flow: Getting Started

Kotlin Flow is a new asynchronous stream library from JetBrains, the company behind the Kotlin language. Sharing many similarities with Rx streams, Kotlin Flow is built on top of Kotlin Coroutines. Get started by learning the concepts and usage patterns for the Flow API within IntelliJ IDEA projects. Then, see Flow in action in an Android app. Note: Flow is experimental in Kotlin 1.3 but will likely be stable in Kotlin 1.4. By Joe Howard.

4.2 (12) · 2 Reviews

Download materials
Save for later
Comments
Share

Learning path

This is part of the Android Data & Networking learning path. View path.

Who is this for?

Experienced Android developers familiar with Kotlin Coroutines who are interested in learning about the new Kotlin Flow approach to reactive stream programming.

This course expects you to be familiar with the Android SDK and Kotlin at an intermediate level. Familiarity with RxJava is helpful but not required.

Covered concepts

  • Working with asynchronous streams.
  • Creating a flow using a flow builder.
  • Collecting flows and flow terminal operators.
  • Taking action on flow completion.
  • Flow cancellation.
  • Flow exception handling.
  • Manipulating flows with operators.
  • Flow context and scope.
  • Buffering flows.
  • Combining flows.
  • Using channels with flows.

Part 1: Kotlin Flow Primer

01
Toggle description

Learn about where Kotlin Flow fits in the landscape of asynchronous programming on Android, and define cold, asynchronous streams.

Toggle description

See how to create an asynchronous flow and compare to synchronous alternatives, and learn about collecting a flow.

Toggle description

Learn about the use of various flow builders, including the flowOf function and asFlow that converts collections like lists to flows.

Toggle description

See how Kotlin Flow adheres to the notion of structured concurrency, and implement a simple use case of flow cancellation via a timeout.

Toggle description

Learn how to manipulate flows with the common map, filter, and reduce operators and also learn about the Flow transform operator and terminal operators.

Toggle description

Unlike Rx streams, completion events are not inherent in flows. See how to add actions that run when a flow completes, both imperatively and declaratively.

Part 2: Working with Flows

Toggle description

Coroutine context determines the configuration in which a flow runs; see how to change the coroutine context using flowOn.

Toggle description

Flows are intended to be used for long running operations; see how to use buffering to handle flow processing and flow emission taking different times.

Toggle description

Learn about the operators that are available in the Kotlin Flow API to combine flows, and also see how to use the onEach and flatMap operators.

Toggle description

Exceptions may occur when flow elements are being emitted or collected; see how to handle exceptions in both cases.

Part 3: Kotlin Flow on Android

Toggle description

Switch from simple flows in IntelliJ IDEA to working with flows in an Android app, and get an introduction to the Android sample project.

Toggle description

See how to create a flow running from the app local database through the app repository and ViewModel and into the user interface.

Toggle description

Learn about how channels can be used to inject elements into flows, and apply your knowledge of flow operators in the Android app.

Toggle description

Apply what you learned about combining operators to combine a flow from the database with a flow of data retrieved over the network.