My Solution repository for the course on Kotlin Coroutines taught by Catalin Stefan.
- Theory and Fundamentals of Coroutines
- Core components
- Scope
- Context
- Suspending functions
- Jobs
- Dispatchers
- Coroutine Builders
- Switching context
- Exception handling
- Asynchronous Flow
- Flow Builders
- Flow properties
- Flow Operators
- Exception handling
- Channels
- Channel Producer
- Channel Pipelines
- Fan-out Principle (Single Channel to multiple Coroutines)
- Fan-in Principle (Multiple Coroutines to Single Channel)
- Buffered Channels
- Ticker Channels
- Concurrency and Shared State
- Concurrency and Synchronization approaches
- Atomic Variables
- Thread confinement
- Mutual exclusion locks
- Concurrency and Synchronization approaches
- Core components
- Coroutines and Coroutines Flow with Retrofit
- Coroutines with Room
Android Studio 3.6+
- Android development knowledge with Lifecycle components like ViewModels and LiveData
- Kotlin
- Retrofit
- Room database
- Navigation component
- MVVM architecture
- master
- This is the main/default branch that contains the following practice projects with Coroutines
- ImageProcessingCoroutines
- This project shows how to download an Image from a URL and then apply a "Black & White" filter on the image, all in the background using Coroutines.
- CoroutinesRetrofit
- This project shows how to download a list of Country information from a URL/endpoint in the background via a Coroutine, and then display it on a RecyclerView.
- CoroutinesRoom
- This project implements the First Time User Experience using Room as its backend to onboard and authenticate users.
- Onboarding and Authentication of Users is done by communicating with the Room database in the background via a Coroutine.
- CoroutinesFlowRetrofit
- This project shows how to download a list of News items from a URL/endpoint in the background via Coroutine Flows, and then emit each News item with a delay in-between, in order to simulate a News Ticker.
- The above Flow of News items is converted into a LiveData to show the result in a RecyclerView when the registered observer gets the update.
- ImageProcessingCoroutines
- This is the main/default branch that contains the following practice projects with Coroutines
- idea_practice
- This branch contains CoroutineConcepts project with easy to understand codes to establish each of the Coroutines concepts.
- This is a separate IntelliJ IDEA project, hence it deserves a separate branch.