Android State Management
Priority: P0
Implementation Guidelines
ViewModel Pattern
- •Exposure: Expose ONE
StateFlow<UiState>via.asStateFlow(). - •Scope: Use
viewModelScopefor all coroutines. - •Initialization: Trigger initial load in
initorLaunchedEffect(once).
UI State (LCE)
- •Type: sealed interface
UiState(Loading, Content, Error). - •Immutability: Data classes inside should be
@Immutable.
Flow Lifecycle
- •Collection: Use
collectAsStateWithLifecycle()in Compose. - •Hot Flows: Use
SharingStarted.WhileSubscribed(5000)for shared resources.
Anti-Patterns
- •LiveData:
**No LiveData**: Use StateFlow. - •Mutable State:
**No Mutable Public**: Expose read-only Flow. - •Context:
**No Context in VM**: Memory Leak Risk.