Bevarelse af aktivitetstilstand i Android med Gem forekomsttilstand

Bevarelse af aktivitetstilstand i Android med Gem forekomsttilstand
Bevarelse af aktivitetstilstand i Android med Gem forekomsttilstand

Forståelse af aktivitetstilstandsbevarelse

Det kan være noget forvirrende at gemme en aktivitets tilstand i Android, især for udviklere, der er nye til Android SDK-platformen. Eksemplet her viser en simpel applikation, der hilser brugere forskelligt, afhængigt af om det er første gang de åbner appen, eller om de vender tilbage.

Den aktuelle implementering viser dog altid den indledende hilsen, uanset navigation væk fra appen. Denne artikel vil guide dig gennem de nødvendige trin for korrekt at gemme og gendanne en aktivitets tilstand ved hjælp af `onSaveInstanceState`-metoden.

Kommando Beskrivelse
onSaveInstanceState(Bundle outState) Denne metode kaldes før en aktivitet ødelægges for at gemme UI-komponenternes tilstand.
putString(String key, String value) Gemmer en strengværdi i bundtet med en specificeret nøgle til senere hentning.
getString(String key) Henter en strengværdi fra pakken ved hjælp af den angivne nøgle.
onRestoreInstanceState(Bundle savedInstanceState) Denne metode kaldes efter onStart() for at gendanne UI-tilstanden fra den tidligere gemte bundle.
setContentView(View view) Indstiller aktivitetsindholdet til en eksplicit visning, hvilket gør det til roden af ​​layoutet.
TextView.setText(String text) Indstiller den tekst, der skal vises af TextView.
super.onCreate(Bundle savedInstanceState) Kalder onCreate() metoden for superklassen, initialiserer aktiviteten.

Sådan gemmer du aktivitetstilstand i Android

I de medfølgende scripts undersøger vi, hvordan man gemmer en aktivitets tilstand ved hjælp af onSaveInstanceState(Bundle outState) metode i Android udvikling. Det første script demonstrerer oprettelse af en aktivitet, der viser en hilsen, som ændres afhængigt af, om det er brugerens første gang, der åbner appen, eller om de er navigeret væk og vendt tilbage. Den kritiske del af scriptet involverer at gemme tilstanden af TextView bruger onSaveInstanceState metode. Når aktiviteten er ved at blive ødelagt, kaldes denne metode for at gemme UI-komponenternes tilstand. Vi gemmer teksten vist i TextView bruger putString(String key, String value) metode, som forbinder en strengværdi med en specificeret nøgle i Bundle.

Ved genskabelse af aktiviteten onCreate(Bundle savedInstanceState) metoden kontrollerer, om der er en gemt forekomsttilstand. Hvis der er, henter den den tidligere gemte tekst ved hjælp af getString(String key) metode og sætter den tilbage til TextView. Dette sikrer, at brugeren ser den samme besked, som de så, før han navigerede væk. I det andet script forfiner vi denne tilgang yderligere ved at tilføje onRestoreInstanceState(Bundle savedInstanceState) metode, som kaldes efter onStart() for at gendanne UI-tilstanden fra den tidligere gemte Bundle. Denne metode indstiller den gemte tekst direkte til TextView, der sikrer, at UI-tilstanden er konsistent og bevares problemfrit på tværs af genstart af aktivitet.

Implementering af statsbesparelse i Android-aktiviteter

Java Android udvikling

package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    private TextView mTextView = null;
    private static final String TEXT_VIEW_KEY = "textViewKey";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mTextView = new TextView(this);

        if (savedInstanceState == null) {
            mTextView.setText("Welcome to HelloAndroid!");
        } else {
            mTextView.setText(savedInstanceState.getString(TEXT_VIEW_KEY));
        }
        setContentView(mTextView);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(TEXT_VIEW_KEY, mTextView.getText().toString());
    }
}

Sikring af datapersistens i Android-applikationer

Java Android udvikling

package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    private TextView mTextView = null;
    private static final String TEXT_VIEW_STATE = "textViewState";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mTextView = new TextView(this);

        if (savedInstanceState != null) {
            mTextView.setText(savedInstanceState.getString(TEXT_VIEW_STATE));
        } else {
            mTextView.setText("Welcome to HelloAndroid!");
        }
        setContentView(mTextView);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(TEXT_VIEW_STATE, mTextView.getText().toString());
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        mTextView.setText(savedInstanceState.getString(TEXT_VIEW_STATE));
    }
}

Sikring af tilstandsvedholdenhed på tværs af konfigurationsændringer

Når du udvikler Android-applikationer, er styring af aktivitetstilstand under konfigurationsændringer, såsom skærmrotationer, afgørende. Konfigurationsændringer får aktiviteter til at blive ødelagt og genskabt, hvilket fører til tab af midlertidige brugergrænsefladetilstande, hvis de ikke håndteres korrekt. Bruger onSaveInstanceState(Bundle outState) metode, kan udviklere gemme de nødvendige UI-tilstandsoplysninger. Denne metode kaldes før aktiviteten ødelægges, hvilket giver udviklere mulighed for at gemme nøgleværdi-par i en Bundle, bevare staten til senere restaurering.

Derudover er det vigtigt at forstå den rolle ViewModel klasse fra Androids Architecture Components. ViewModel er designet til at gemme og administrere UI-relaterede data på en livscyklusbevidst måde, så data kan overleve konfigurationsændringer. Ved hjælp af ViewModel, kan udviklere afkoble UI-controllere fra de data, de håndterer, hvilket gør applikationen mere robust og lettere at vedligeholde. Kombinerer ViewModel med onSaveInstanceState giver en omfattende løsning til effektiv styring af aktivitetstilstand.

Ofte stillede spørgsmål om styring af aktivitetstilstand

  1. Hvad er formålet med onSaveInstanceState?
  2. Det onSaveInstanceState metode bruges til at gemme den aktuelle UI-tilstand for en aktivitet, før den ødelægges.
  3. Hvordan gendanner jeg aktivitetstilstanden?
  4. Du kan gendanne aktivitetstilstanden i onCreate metode ved at kontrollere savedInstanceState Bundle og hente de lagrede værdier.
  5. Hvad er en Bundle?
  6. EN Bundle er et kort over nøgleværdi-par, der bruges til at overføre data mellem aktiviteter og gemme UI-tilstanden.
  7. Hvad er rollen ViewModel i statslig ledelse?
  8. ViewModel gemmer UI-relaterede data på en livscyklusbevidst måde og overlever konfigurationsændringer.
  9. Hvornår er onRestoreInstanceState hedder?
  10. onRestoreInstanceState kaldes efter onStart() når aktiviteten geninitialiseres fra en tidligere gemt tilstand.
  11. Kan jeg bruge begge dele ViewModel og onSaveInstanceState sammen?
  12. Ja, kombinere ViewModel med onSaveInstanceState giver en robust løsning til styring af UI-tilstand på tværs af konfigurationsændringer.
  13. Hvad er konfigurationsændringer i Android?
  14. Konfigurationsændringer omfatter skærmrotationer, tastaturtilgængelighed og sprogændringer, der får aktiviteten til at blive genskabt.
  15. Hvordan gør putString arbejde i en Bundle?
  16. putString gemmer en strengværdi i en Bundle med tilhørende nøgle til senere hentning.

Afslutning af Android State Management

Effektiv styring af tilstanden af ​​en Android-aktivitet er afgørende for at opretholde en smidig brugeroplevelse, især under konfigurationsændringer. Ved at udnytte onSaveInstanceState og onRestoreInstanceState metoder, kan udviklere sikre, at brugerdata og UI-tilstande bevares og gendannes problemfrit. Denne tilgang forbedrer ikke kun app-stabiliteten, men forbedrer også brugertilfredsheden ved at levere en ensartet og pålidelig grænseflade.