Skip to Content
Programming Android with Kotlin
book

Programming Android with Kotlin

by Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, Mike Dunn, G. Blake Meike
December 2021
Intermediate to advanced
352 pages
8h 38m
English
O'Reilly Media, Inc.
Content preview from Programming Android with Kotlin

Chapter 10. Flows

Up to now, we’ve covered coroutines, suspending functions, and how to deal with streams using Channels. We’ve seen from the previous chapter that working with Channels implies starting coroutines to send and/or receive from those Channels. The aforementioned coroutines are then hot entities that are sometimes hard to debug, or can leak resources if they aren’t cancelled when they should be.

Flows, like Channels, are meant to handle asynchronous streams of data, but at a higher level of abstraction and with better library tooling. Conceptually, Flows are similar to Sequences, except that each step of a Flow can be asynchronous. It is also easy to integrate flows in structured concurrency, to avoid leaking resources.

However, Flows1 aren’t meant to replace Channels. Channels are building blocks for flows. Channels are still appropriate in some architectures such as in CSP (see Chapter 9). Nevertheless, you’ll see that flows suit most needs in asynchronous data processing.

In this chapter, we’ll introduce you to cold and hot flows. You’ll see how cold flows can be a better choice when you want to make sure never to leak any resources. On the other hand, hot flows serve a different purpose such as when you need a “publish-subscribe” relationship between entities in your app. For example, you can implement an event bus using hot flows.

The best way to understand flows is to see how they are used in real-life applications. So this chapter will also go through a series ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Programming Kotlin

Programming Kotlin

Venkat Subramaniam
Java to Kotlin

Java to Kotlin

Duncan McGregor, Nat Pryce

Publisher Resources

ISBN: 9781492062998Errata Page