Kotlin Flow -perusteet
Tuottakaa ja kerätkää tietovirtoja.
Kotlin Flow -perusteet on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mikä Flow on
Flow on asynkroninen virta, joka tuottaa useita arvoja ajan kuluessa. Ajattele sitä keskeytettävänä sarjana, jota voi muuntaa ja kerätä.
Flow-virran rakentaminen
flow { } -rakentimen avulla voit emit-funktiolla tuottaa arvoja ja tarvittaessa keskeyttää suorituksen niiden välillä.
fun numbers(): Flow<Int> = flow {
for (i in 1..3) {
delay(100)
emit(i)
}
}Flow-virran kerääminen
Flow ei tee mitään, ennen kuin alat kerätä sitä. Kerääminen on suspend-toiminto, joten se suoritetaan korutiinissa.
scope.launch {
numbers().collect { value ->
println(value)
}
}Kylmät virrat
Flow-virrat ovat kylmiä: rakentimen lohko suoritetaan alusta jokaiselle kerääjälle. Kaksi kerääjää saa kumpikin oman itsenäisen sarjansa alusta alkaen.
Muuntaminen map- ja filter-operaattoreilla
Operaattorit muuntavat tuotettuja arvoja laiskasti ja suoritetaan vasta, kun virtaa kerätään.
numbers()
.map { it * 10 }
.filter { it > 10 }
.collect { println(it) }Lisää operaattoreita
take(n)— vain ensimmäiset n arvoa.onEach— sivuvaikutus jokaista arvoa kohden.distinctUntilChanged— ohittaa toistuvat arvot.
Virheiden käsittely
Ota ylävirran poikkeukset kiinni catch-operaattorilla.
numbers()
.map { riskyTransform(it) }
.catch { e -> emit(-1) }
.collect { println(it) }Reagoiminen valmistumiseen
Käytä onCompletion-operaattoria suorittaaksesi koodia, kun Flow valmistuu tai peruutetaan.
numbers()
.onCompletion { println("done") }
.collect { println(it) }Tuottajan säikeen vaihtaminen
Käytä flowOn-operaattoria suorittaaksesi ylävirran tietyllä dispatcherilla vaikuttamatta kerääjään.
fun load(): Flow<Data> = flow {
emit(readFromDisk())
}.flowOn(Dispatchers.IO)Pääteoperaattorit
Jotkin operaattorit päättävät Flow-virran ja palauttavat arvon, kuten toList, first tai reduce. Ne ovat suspend-funktioita.
val all: List<Int> = numbers().toList()Missä Flow-virrat ovat hyödyllisiä Androidissa
Flow-virrat mallintavat kaikkea, mikä tuottaa arvoja ajan kuluessa: tietokannan muutoksia (Room), sijaintipäivityksiä, kirjoittamisen aikaista hakua ja useiden tietolähteiden yhdistämistä.
Pikatesti
Testaa, miten hyvin ymmärrät Flow-virtojen perusteet.
Kertaus
Opit seuraavat asiat:
flow { emit(...) }rakentaa asynkronisen virran.- Flow-virrat ovat kylmiä ja suoritetaan vasta, kun niitä kerätään.
- Muunnat virtoja
map- jafilter-operaattoreilla ja käsittelet virheitäcatch-operaattorilla. flowOnmäärittää tuottajan dispatcher-kontekstin.
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”Kotlin Flow -perusteet” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Kotlin Flow -perusteet”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Kotlin Flow -perusteet”?
Tuottakaa ja kerätkää tietovirtoja. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Kotlin Flow -perusteet”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?
Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Korutiinien perusteet ja käyttöalueet
- viewModelScope ja Dispatchers
- Kotlin Flow -perusteet
- StateFlow ja SharedFlow