AGENT SKILL
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)
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 67
- Forks
- 24
01 前言 Front Matter
- name
- android-concurrency
- description
- 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)
02 资源文件 2
- 参考文档checklist.md1.6 KB
- 其他customize.toml1.6 KB
03 SKILL.md 正文
Android Concurrency Standards
Priority: P0
Implementation Guidelines
Structured Concurrency
- Scopes: Always use
viewModelScope(VM) orlifecycleScope(Activity/Fragment). - Dispatchers: INJECT Dispatchers (
DispatcherProvider) for testability. Do not hardcodeDispatchers.IO.
Flow usage
- Cold Streams: Use
Flowfor data streams. - Hot Streams: Use
StateFlow(State) orSharedFlow(Events). - Collection: Use
collectAsStateWithLifecycle()(Compose) orrepeatOnLifecycle(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.