StateFlow en SharedFlow
Maak reactieve state beschikbaar vanuit uw app.
StateFlow en SharedFlow is een gratis Android Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.
Hete flows
In tegenstelling tot koude flows zijn StateFlow en SharedFlow heet: ze bestaan onafhankelijk van verzamelaars en kunnen met meerdere verzamelaars worden gedeeld.
StateFlow bevat een status
Een StateFlow bevat altijd één huidige waarde. Nieuwe verzamelaars ontvangen onmiddellijk de nieuwste waarde. Het is ideaal voor de status van de gebruikersinterface.
private val _count = MutableStateFlow(0)
val count: StateFlow<Int> = _count.asStateFlow()StateFlow bijwerken
Stel .value rechtstreeks in of gebruik update voor een atomaire lees-bewerk-schrijfbewerking.
_count.value++
// or, atomically:
_count.update { it + 1 }StateFlow voegt waarden samen en verwijdert duplicaten
StateFlow bewaart alleen de nieuwste waarde (samenvoeging) en stuurt geen nieuwe waarde uit als die gelijk is aan de oude. Zo voorkom je overbodige updates van de gebruikersinterface.
SharedFlow voor gebeurtenissen
Een SharedFlow heeft geen verplichte huidige waarde en kan een instelbaar aantal eerdere waarden opnieuw afspelen. Het is geschikt voor eenmalige gebeurtenissen, zoals navigeren of een snackbar tonen.
private val _events = MutableSharedFlow<String>()
val events: SharedFlow<String> = _events.asSharedFlow()Gebeurtenissen uitsturen
Stuur vanuit een coroutine een gebeurtenis naar een SharedFlow.
fun onSave() {
viewModelScope.launch {
_events.emit("Saved!")
}
}Waarom geen StateFlow voor gebeurtenissen
StateFlow bewaart de laatste waarde. Een verzamelaar die zich opnieuw abonneert (bijvoorbeeld na een rotatie) zou de oude gebeurtenis dus opnieuw ontvangen en bijvoorbeeld twee keer navigeren. SharedFlow speelt waarden standaard niet opnieuw af.
SharedFlow configureren
Stem replay en extraBufferCapacity af om buffering en gedrag bij te hoge invoersnelheid te regelen.
MutableSharedFlow<String>(
replay = 0,
extraBufferCapacity = 1
)Een koude Flow naar StateFlow converteren
Gebruik stateIn om een koude bovenliggende stroom om te zetten in een gedeelde StateFlow met de ViewModel als bereik.
val uiState = repo.stream()
.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(5000),
UiState()
)Kiezen tussen beide
- StateFlow → huidige status van het scherm (heeft altijd een waarde).
- SharedFlow → tijdelijke gebeurtenissen (één keer uitvoeren).
Beide verzamelen
Verzamel StateFlow in Compose met collectAsStateWithLifecycle; verzamel SharedFlow-gebeurtenissen binnen een LaunchedEffect om ze één keer af te handelen.
LaunchedEffect(Unit) {
vm.events.collect { msg -> showSnackbar(msg) }
}Korte controle
Controleer je begrip van StateFlow en SharedFlow.
Samenvatting
Je hebt geleerd:
- StateFlow is een hot statehouder met conflatie en een huidige waarde.
- SharedFlow is een hot eventstream met instelbare replay.
- Gebruik StateFlow voor toestand en SharedFlow voor eenmalige gebeurtenissen.
stateInzet koude flows om in StateFlow.
Leer Kotlin met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 36
- Lessen
- 152
Veelgestelde vragen
Is de les “StateFlow en SharedFlow” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “StateFlow en SharedFlow”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.
Wat leer ik in “StateFlow en SharedFlow”?
Maak reactieve state beschikbaar vanuit uw app. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Android Academy te beginnen?
Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “StateFlow en SharedFlow”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Android Academy?
Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De basis van coroutines en scopes
- viewModelScope en Dispatchers
- De basis van Kotlin Flow
- StateFlow en SharedFlow