Kotlin Coroutines and Flow for Android Development
- Descrição
- Currículo
- FAQ
- Revisões
Google recommends Kotlin Coroutines and Flow as the preferred solution for asynchronous programming on Android. Sooner or later, probably every Android developer will get in touch with these topics.
This course will give you a deep understanding of Kotlin Coroutines and Flow and show how to implement the most common use cases for Android applications.
This course consists of two big parts: The Coroutines part and the Flow part.
Before being able to use Flows in our applications, we first need a solid understanding of Coroutines. That’s why Coroutines are covered first. However, if you already have some experience with Coroutines, then you can also start with the Flow part right away, and jump back to lessons of the Coroutines part whenever needed.
In the part about Coroutines, 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 course’s final section, 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
In the part about Kotlin Flow, we first cover all the basics. We will answer the question “What is a Flow?” and then we discuss the benefits and drawbacks of reactive programming.
Afterward, we are going to have a look at different Flow builders and operators:
-
basic flow builders
-
terminal operators
-
terminal operator “launchIn()”
-
terminal operator “asLiveData()”
-
lifecycle operators
-
intermediate operators
In our first real Flow use case, we use a Flow to create a live stock-tracking feature, that uses all the available basic flow components.
In the next module, we will take a look at Exception Handling and Cancellation with Kotlin Flow.
In the following module, you will learn about StateFlow and SharedFlow and the following concepts:
-
how to make Coroutines lifecycle-aware with the “repeatOnLifecycle()” suspend function
-
Hot Flows VS Cold Flows
-
Converting Flows to SharedFlows with the “shareIn()” operator
-
Converting Flows to StateFlows with the “stateIn()” operator
-
When to use SharedFlow and when to use StateFlow
Next, you will learn about Channels, how they differ from hot flows, and when they are useful in Android Applications.
By the end of this course, you will have a fundamental understanding of Kotlin Coroutines and Flows and be able to write readable and maintainable, asynchronous, and multithreaded Android Applications.
-
13Section IntroductionVídeo Aula
-
14Routines and CoroutinesVídeo Aula
-
15Suspend FunctionsVídeo Aula
-
16Coroutines and ThreadsVídeo Aula
-
17Blocking VS SuspendingVídeo Aula
-
18Multithreaded CoroutinesVídeo Aula
-
19Internal WorkingsVídeo Aula
-
20How delay() worksVídeo Aula
-
21Section RecapVídeo Aula
-
30Section IntroductionVídeo Aula
-
31UseCase descriptionVídeo Aula
-
32Implementing UseCase#3 in a sequential wayVídeo Aula
-
33The async coroutine builderVídeo Aula
-
34Implementing UseCase#3 in a concurrent wayVídeo Aula
-
35Implementing UseCase#4 in a sequential wayVídeo Aula
-
36Exercise 2: Implementing UseCase#4 in a concurrent wayVídeo Aula
-
37Exercise 2: SolutionVídeo Aula
-
38Section RecapVídeo Aula
-
50Section IntroductionVídeo Aula
-
51UseCase explanationVídeo Aula
-
52Implementation running on Main ThreadVídeo Aula
-
53Coroutine ContextVídeo Aula
-
54Coroutine DispatchersVídeo Aula
-
55Using withContext for context switchingVídeo Aula
-
56Coroutine Scope VS Coroutine ContextVídeo Aula
-
57Exercise4: Perform calculation in several CoroutinesVídeo Aula
-
58Exercise 4: SolutionVídeo Aula
-
59Performance AnalysisVídeo Aula
-
60Section RecapVídeo Aula
-
61Section IntroductionVídeo Aula
-
62The unhappy pathVídeo Aula
-
63Structured ConcurrencyVídeo Aula
-
64Coroutine ScopesVídeo Aula
-
65Building up the Job HierarchyVídeo Aula
-
66Parents wait for ChildrenVídeo Aula
-
67Cancellation of parent and child jobsVídeo Aula
-
68Job and SupervisorJobVídeo Aula
-
69Unstructured ConcurrencyVídeo Aula
-
70GlobalScopeVídeo Aula
-
71ViewModelScopeVídeo Aula
-
72LifecycleScopeVídeo Aula
-
73Scoping Functions coroutineScope{} and supervisorScope{}Vídeo Aula
-
74Continue Coroutine execution when the user leaves the screenVídeo Aula
-
75Section RecapVídeo Aula
