Kotlin Coroutines and Flow for Android Development [2023]
Responsible | Nguyễn Trung Dũng |
---|---|
Last Update | 04/10/2023 |
Completion Time | 1 day 18 hours 36 minutes |
Members | 2 |
-
Phần 1: Introduction
-
001 Extended Course Preview
-
002 Course Structure and Goals
-
003 How to get the source code of the Sample Project
-
004 Basis Setup of Sample Project
-
-
Phần 2: Different Approaches for Asynchronous Programming
-
001 Section Introduction
-
002 What is Asynchronous Programming
-
003 Use Case Explanation
-
004 Callback Implementation
-
005 RxJava Implementation
-
006 Coroutines Implementation
-
007 Comparing Approaches
-
008 Recap
-
-
Phần 3: Coroutine Fundamentals
-
14. Routines and Coroutines
-
15. Suspend Functions
-
16. Coroutnes and Threads
-
004 Blocking VS Suspending
-
005 Multithreaded Coroutines
-
006 Internal working
-
007 How Daley () works
-
008 Section Recap
-
-
Phần 4: Performing Network Requests sequentially
-
001 Introduction
-
002 Adding Coroutines to your project
-
003 Coroutine Builders: Launch and Runbloking
-
004 Main-safety
-
005 Basic error handling with try-catch
-
006 Exercise 1
-
007 Exercise 1 Solution
-
008 Section Recap
-
-
Phần 5: Performing Network Requests concurently
-
001 Section Introduction
-
002 UseCase description
-
003 Implementing UseCase#3 in a sequential way
-
004 The async coroutine builder
-
005 Implementing UseCase#3 in a concurrent way
-
006 Implementing UseCase#4 in a sequential way
-
007 Exercise 2 Implementing UseCase#4 in a concurrent way
-
008 Exercise 2 Solution
-
009 Section Recap
-
-
Phần 6: Higher-Order Functions
-
Preview
-
002 Implementing retries
-
003 Extract retry logic into higher order function
-
004 Add exponential backoff to retry
-
005 Exercise 3 Combining retries and timeout
-
006 Exercise 3 Solution
-
007 Section Recap
-
-
Phần 7: Using Room with Coroutines
-
001 Section Introduction
-
002 UseCase description
-
003 UseCase Implementation
-
004 Section Recap
-
-
Phần 8: Background Processing with Coroutines
-
001 Section Introduction
-
002 UseCase explanation
-
003 Implementation running on Main Thread
-
004 Coroutine Context
-
005 Coroutine Dispatchers
-
006 Using withContext for context switching
-
007 Coroutine Scope VS Coroutine Context
-
008 Exercise4 Perform calculation in several Coroutines
-
009 Exercise 4 Solution
-
010 Performance Analysis
-
011 Section Recap
-
-
Phần 9: Structured Concurrency and Coroutine Scopes
-
001 Section Introduction
-
002 The unhappy path
-
003 Structured Concurrency
-
004 Coroutine Scopes
-
005 Building up the Job Hierarchy
-
006 Parents wait for Children
-
007 Cancellation of parent and child jobs
-
008 Job and SupervisorJob
-
009 Unstructured Concurrency
-
Preview
-
011 ViewModelScope
-
012 LifecycleScope
-
013 Scoping Functions coroutineScope{} and supervisorScope{}
-
014 Continue Coroutine execution when the user leaves the screen
-
015 Section Recap
-
-
Phần 10: Coroutines Cancellation
-
001 Cancelling Coroutines
-
002 Cooperative Cancellation
-
003 NonCancellable Code
-
004 Making UseCase10 cooperative regarding cancellation
-
005 Section Recap
-
-
Phần 11: Coroutines Exception Handling
-
001 Section Introduction
-
002 Exception Handling with try-catch
-
003 Coroutine Exception Handler
-
004 Try-Catch VS Coroutine Exception Handler
-
005 launch{} VS async{}
-
006 Exception Handling specifics of coroutineScope{}
-
007 Exception Handling specifics of supervisorScope{}
-
008 Implementation of UseCase13 with try-catch
-
009 Implementation of UseCase13 with CoroutineExceptionHandler
-
010 Implementation of UseCase13 - show results even if a child coroutine fails
-
011 Rethrowing CancellationExceptions
-
012 Coroutines Exception Handling Cheat Sheet
-
013 Conference Talk Exception Handling in Kotlin Coroutines
-
014 Section Recap
-
-
Phần 12: Testing Coroutines
-
001 Section Introduction
-
Important information
-
003 General Unit Testing Approach
-
004 Using the TestCoroutineDispatcher for our first unit test
-
005 Testing the unhappy path
-
006 Creating a JUnit4 Rule for Testing Coroutine-based code
-
007 Excercise 5 Create a Unit Test for UseCase2
-
008 Solution Exercise 5
-
009 runBlockingTest{} and VirtualTime
-
010 Testing sequential and concurrent execution
-
011 Testing Timeouts (UseCase5) and Retries (UseCase 6)
-
012 Testing implementations that use Dispatchers.Default or Dispatchers.IO
-
013 TestCoroutineScope and Controlling Coroutine Execution
-
014 Section Recap
-
-
Phần 13: Basics of Kotlin Flow
-
Kotlin Coroutines and Flow for Android Development [2023]; Section Introduction
-
What is a Flow?
-
Reactive Programming
-
Starting our first Flow Use Case
-
Basic Flow Builders
-
Displaying the stock list on the screen
-
Basic terminal operators
-
Terminal operator
-
Kotlin Coroutines and Flow for Android Development [2023]; Using launchln() in UseCase1
-
Lifecycle operators
-
Terminal operator "asLiveData"
-
013 Basic Intermediate Operators
-
014 Exercise Intermediate Operators
-
015 Exercise Solution
-
016 Section Recap
-
Slides of the Section
-
-
Phần 14: Flow Exception Handing and Cancellation
-
001 Flow Exception Handling
-
002 Exception Transparency
-
003 The retry() Operator
-
004 Exercise Flow Exception Handling
-
005 Exercise Solution
-
006 Flow Cancellation
-
Slides of the Section
-
-
Phần 15: State Flow and SharedFlow
-
001 Exposing Flows instead of LiveData in the ViewModel
-
002 Naive Approach - Exposing regular Flows
-
003 Lifecycle-aware Coroutines with repeatOnLifecycle()
-
004 Flows are cold
-
005 SharedFlows are hot
-
006 Converting Flows to SharedFlows with shareIn()
-
007 Keeping the upstream Flow alive during configuration changes
-
008 The replay parameter
-
009 StateFlow
-
010 Converting Flows to StateFlows with stateIn()
-
011 SharedFlow VS StateFlow
-
012 Section Recap
-
Slides of the Section
-
-
Phần 16: Channels
-
001 Channels for Android Development
-
Single UI Events
-
Slides of the Section
-
-
Phần 17: Concurrent Flows
-
Important information
-
002 The buffer() operator
-
003 Dealing with Backpressure (aka BufferOverflow)
-
004 collectLatest(), mapLatest() and transformLatest()
-
005 The conflate() operator
-
Phần 17; 006 Buffers in SharedFlows and StateFlows
-
Slides of the Section
-
-
Phần 18: Thank you and Bonus
-
001 Thank you and Bonus
-