Android Academy · Oppitunti

Kotlin Flow -perusteet

Tuottakaa ja kerätkää tietovirtoja.

Oppitunti 3/413 vaihetta

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- ja filter-operaattoreilla ja käsittelet virheitä catch-operaattorilla.
  • flowOn määrittää tuottajan dispatcher-kontekstin.
Aloita maksutta

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

  1. Korutiinien perusteet ja käyttöalueet
  2. viewModelScope ja Dispatchers
  3. Kotlin Flow -perusteet
  4. StateFlow ja SharedFlow
← Takaisin: Android Academy