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