Learn Android
Five topics, in dependency order.
The hands-on path to becoming an Android engineer — every topic pairs a written explanation with a runnable repo, a diagram, and the concepts you need to internalise. Work top to bottom.
Explore the path
Kotlin Coroutines
Lightweight threads — async code that reads top to bottom.
A coroutine is not a thread. It's a unit of work that can suspend, freeing its thread, and resume later. Structured concurrency organises them into a tree: cancel the scope, and every coroutine in it is cancelled.
#suspend#dispatchers#scopes#structured-concurrency
CoroutineScope (viewModelScope)
↓
suspend · resume
await() → result
cancel the scope → every child is cancelled
All topics
Concurrency without the thread-per-task tax
Lightweight threads that make async code read top-to-bottom.
read the topic →
Reactive streams on coroutines
A sequence of values over time, produced, transformed, and collected.
read the topic →
Unidirectional data flow in a UI
The View observes state; the ViewModel owns it; the repository hides the data.
read the topic →
The dependency-ordered map
Nine stages, each a prerequisite for the next — the order is the content.
read the topic →
Unlearning boilerplate, not memorising syntax
Every pairing is the same lesson: a Java pattern you typed by habit became a language feature.
read the topic →