Melyik mechanizmus a legjobb az UI állapotának megőrzésére: ViewModel vagy SaveInstanceState, és miben különböznek?
sobes.tech MI
Válasz az MI-től
A ViewModel és a SaveInstanceState az UI állapotának megőrzésére szolgál, de különböző módon működnek, és különböző feladatokra készültek.
-
ViewModel az adatok memóriában való tárolását végzi konfigurációs változások (pl. képernyőforgatás) során. Annyit él, mint az Activity vagy Fragment, és nem pusztul el az UI újraalkotásakor. Nagy adatmennyiség és üzleti logika tárolására alkalmas.
-
SaveInstanceState egy mechanizmus kis adatok tárolására egy Bundle-ben, amelyet a rendszer akkor tart meg, amikor az Activity-t megsemmisíti (pl. memóriahiány esetén). A SaveInstanceState-ből származó adatok az Activity újraindításakor kerülnek visszaállításra.
Mit érdemes használni?
- Az UI állapotának megőrzéséhez, amelynek túl kell élnie a képernyőforgatást, a ViewModel a jobb választás.
- Kritikus adatok esetén, amelyeket a rendszer teljes megsemmisítése után kell visszaállítani, a SaveInstanceState a megfelelő.
Gyakran kombinálják: a fő logika és adatok esetén a ViewModel, kis primitív adatok gyors visszaállításához a SaveInstanceState.