Android Concurrency

Standards for Coroutines, Flow, and Threading. Use when writing suspend functions, choosing coroutine scopes, switching between StateFlow and SharedFlow, injecting Dispatchers for testability, or debugging threading issues in Android. (triggers: **/*ViewModel.kt, **/*UseCase.kt, **/*Repository.kt, suspend, viewModelScope, lifecycleScope, Flow, coroutine, Dispatcher, DispatcherProvider, GlobalScope)

ComeOnOliver Updated 61 repo stars

File contents

Android Concurrency Standards

Priority: P0

Implementation Guidelines

Structured Concurrency

  • Scopes: Always use viewModelScope (VM) or lifecycleScope (Activity/Fragment).
  • Dispatchers: INJECT Dispatchers (DispatcherProvider) for testability. Do not hardcode Dispatchers.IO.

Flow usage

  • Cold Streams: Use Flow for data streams.
  • Hot Streams: Use StateFlow (State) or SharedFlow (Events).
  • Collection: Use collectAsStateWithLifecycle() (Compose) or repeatOnLifecycle (Views).

Anti-Patterns

  • No GlobalScope: Use viewModelScope or lifecycleScope — never GlobalScope.
  • No async/await by default: Prefer simple suspend functions; async only for parallel calls.

References

  • Dispatcher Pattern

ComeOnOliver/skillshub/tree/main/skills/HoangNguyen0403/agent-skills-standard/android-concurrency commit 743c5932d3

Frequently asked questions

npx skillmds@latest add comeonoliver/android-concurrency