Book Image

Simplifying Android Development with Coroutines and Flows

By : Jomar Tigcal
Book Image

Simplifying Android Development with Coroutines and Flows

By: Jomar Tigcal

Overview of this book

Coroutines and flows are the new recommended way for developers to carry out asynchronous programming in Android using simple, modern, and testable code. This book will teach you how coroutines and flows work and how to use them in building Android applications, along with helping you to develop modern Android applications with asynchronous programming using real data. The book begins by showing you how to create and handle Kotlin coroutines on Android. You’ll explore asynchronous programming in Kotlin, and understand how to test Kotlin coroutines. Next, you'll learn about Kotlin flows on Android, and have a closer look at using Kotlin flows by getting to grips with handling flow cancellations and exceptions and testing the flows. By the end of this book, you'll have the skills you need to build high-quality and maintainable Android applications using coroutines and flows.
Table of Contents (11 chapters)
1
Part 1 – Kotlin Coroutines on Android
6
Part 2 – Kotlin Flows on Android

Summary

This chapter focused on using Kotlin Flows for asynchronous programming in Android. Flows are built on top of Kotlin coroutines. A flow can emit multiple values sequentially, instead of just a single value.

We started with learning about how to use Kotlin Flows in your Android app. Jetpack libraries such as Room and some third-party libraries support Flow. To safely collect flows in the UI layer and prevent memory leaks and avoid wasting resources, you can use Lifecycle.repeatOnLifecycle and Flow.flowWithLifecycle.

We then moved on to creating Flows with Flow builders. The flowOf function creates a Flow that emits the value or vararg values you provided. You can convert collections and functional types to Flow with the asFlow() extension function. The flow builder function creates a new Flow from a suspending lambda block, inside which you can send values with emit().

Then, we explored Flow operators and learned how you can use them with Kotlin Flows. With terminal...