Lekce 9 - Sledování změn hodnot pomocí StateFlow u coroutines v Kotlin
V minulé lekci, Předávání dat coroutines pomocí kanálů v Kotlin, jsem se naučili používat Channel
pro komunikaci mezi coroutines a popsali si jeho základní typy.
V dnešním tutoriálu věnovaném Kotlin
coroutines si představíme rozhraní StateFlow
, které
nám umožňuje sledovat změnu hodnoty vybrané proměnné a
reagovat na ni.
Předávání informací o změnách hodnot
Představme si, že máme v aplikaci proměnnou
activeUsersCount
, která nám reprezentuje počet
aktivních uživatelů připojených k našemu serveru. Následně bychom
chtěli být informováni, kdykoli dojde ke změně počtu
aktivních uživatelů a tuto informaci zpracovat.
Nejprve si ukážeme, jak problém vyřešit bez využití
StateFlow
a následně si vytvoříme příklad se
StateFlow
, abychom viděli výhody mezi jednotlivými
přístupy.
Řešení bez StateFlow
Pokud StateFlow
neznáme, mohlo by nás napadnout vyřešit
sledování změn hodnot pomocí proměnné callback
, jejíž
hodnoty bychom ukládali do seznamu.
Třída Server
Naše třída Server
by pak vypadala takto:
class Server { private val callbacks = mutableListOf<(Int) -> Unit>() fun start() { callbacks.forEach { it.invoke(20) } Thread.sleep(1000) callbacks.forEach { it.invoke(30) } } fun registerCallback(callback: (Int) -> Unit) { callbacks.add(callback) } }
Ve třídě Server
jsme vytvořili metodu start()
,
která
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit tento kurz
Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V tutoriálu o coroutines v Kotlin si ukážeme, jak můžeme pomocí StateFlow sledovat změny hodnot proměnné a jak ukončit získávání těchto informací.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.