Junior — Middle
Vysvětlete rozdíly mezi snapshotFlow, derivedStateOf, remember a rememberSavable v kontextu správy stavu v Jetpack Compose.
sobes.tech AI
Odpověď od AI
V Jetpack Compose je správa stavu realizována pomocí několika klíčových funkcí, z nichž každá má svůj účel:
- remember — slouží k uchování hodnoty v paměti kompozice. Hodnota je zachována mezi rekonstrukcemi, ale ztrácí se při zničení komponenty (například při otáčení obrazovky). Příklad:
val count = remember { mutableStateOf(0) }
-
rememberSaveable — rozšíření funkce remember, které ukládá stav nejen mezi rekonstrukcemi, ale i při znovuvytvoření aktivity (například po otáčení obrazovky). Používá se mechanismus ukládání stavu (SavedInstanceState).
-
derivedStateOf — vytváří vypočítaný stav, který závisí na jiných stavech. Optimalizuje výkon přepočítáváním hodnoty pouze při změně závislostí.
val isButtonEnabled = derivedStateOf { count.value > 0 }
- snapshotFlow — převádí stav Compose na Flow, což umožňuje sledovat změny stavu reaktivním stylem, například pro integraci s coroutine.
val flow = snapshotFlow { count.value }
Takto:
- remember a rememberSaveable — pro ukládání stavu v kompozici;
- derivedStateOf — pro výpočet závislých stavů;
- snapshotFlow — pro vytvoření Flow ze stavu Compose.