0Pricing
Android Academy · Lekcja

rememberSaveable

Zachowuj stan podczas zmian konfiguracji

rememberSaveable to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Problem z remember

remember przetrwa rekompozycję, ale nie przetrwa zmian konfiguracji, takiej jak obrót ekranu. Po ponownym utworzeniu aktywności zapamiętany stan zostaje utracony i wraca do wartości początkowej.

Poznajmy rememberSaveable

rememberSaveable działa podobnie jak remember, ale dodatkowo zapisuje wartość podczas zmian konfiguracji i zakończenia procesu, a następnie ją przywraca.

var count by rememberSaveable { mutableStateOf(0) }

Przykład z obrotem ekranu

W przypadku zwykłego remember obrót telefonu resetuje licznik do 0. Dzięki rememberSaveable wartość licznika zostaje zachowana podczas obrotu.

Jak działa zapisywanie

W tle rememberSaveable przechowuje wartość w obiekcie Bundle aktywności, w polu saved instance state — za pomocą tego samego mechanizmu, którego stary system widoków używał dla onSaveInstanceState.

Obsługiwane typy

Automatycznie zapisuje typy, które można umieścić w obiekcie Bundle: typy proste, String oraz obiekty Parcelable. Własne typy wymagają dodatkowej pracy.

Zakończenie procesu

Jeśli Android zamknie aplikację działającą w tle, aby odzyskać pamięć, a następnie użytkownik do niej wróci, rememberSaveable przywróci zapisany stan, dzięki czemu ekran będzie wyglądał tak jak przed zamknięciem.

Własne obiekty Saver

W przypadku typu, którego nie można automatycznie zapisać, należy udostępnić obiekt Saver konwertujący go do postaci możliwej do zapisania i z powrotem. Compose oferuje pomocnicze funkcje, takie jak listSaver i mapSaver.

val saver = listSaver<MyState, Any>(
    save = { listOf(it.a, it.b) },
    restore = { MyState(it[0] as Int, it[1] as String) }
)

Używanie własnego obiektu Saver

Należy przekazać obiekt Saver do rememberSaveable za pomocą jego parametru saver, aby Compose wiedział, jak utrwalać dany typ.

var state by rememberSaveable(stateSaver = saver) {
    mutableStateOf(MyState(0, ""))
}

Kiedy używać którego rozwiązania

Należy używać rememberSaveable dla stanu, którego utrata podczas obrotu ekranu byłaby uciążliwa — na przykład danych formularza, pozycji przewijania czy wybranej karty. Zwykłego remember należy używać dla tymczasowego stanu interfejsu, który może zostać zresetowany.

Nie do dużych danych

Zapisywany obiekt Bundle ma niewielki rozmiar. Nie należy przechowywać dużych danych (map bitowych ani długich list) w rememberSaveable. Ciężkie dane należy przechowywać w obiekcie ViewModel lub repozytorium, a zapisywać tylko niewielkie identyfikatory.

Składanie wszystkiego w całość

Pole formularza, które zachowuje wartość po obrocie ekranu dzięki rememberSaveable.

@Composable
fun LoginField() {
    var email by rememberSaveable { mutableStateOf("") }
    TextField(
        value = email,
        onValueChange = { email = it }
    )
}

Szybkie sprawdzenie

Co robi rememberSaveable, czego nie robi remember?

Podsumowanie

rememberSaveable:

  • Zachowuje stan po obrocie ekranu i śmierci procesu, a nie tylko podczas rekompozycji.
  • Automatycznie zapisuje typy proste, String i Parcelable.
  • W przypadku typów niestandardowych należy użyć Saver.
  • Należy przechowywać niewielką ilość zapisanych danych; duże dane powinny znajdować się w ViewModelu.

Często zadawane pytania

Czy lekcja „rememberSaveable” jest bezpłatna?

Tak — pełny tekst „rememberSaveable” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „rememberSaveable”?

Zachowuj stan podczas zmian konfiguracji Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „rememberSaveable”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Stan z remember i mutableStateOf
  2. Wyjaśnienie rekompozycji
  3. Podnoszenie stanu
  4. rememberSaveable
← Powrót do Android Academy