Veiklos būsenos išsaugojimas sistemoje „Android“ su išsaugojimo egzemplioriaus būsena

Veiklos būsenos išsaugojimas sistemoje „Android“ su išsaugojimo egzemplioriaus būsena
Veiklos būsenos išsaugojimas sistemoje „Android“ su išsaugojimo egzemplioriaus būsena

Veiklos būklės išsaugojimo supratimas

Veiklos būsenos išsaugojimas sistemoje „Android“ gali būti šiek tiek gluminantis, ypač kūrėjams, kurie pradeda naudoti Android SDK platformą. Čia pateiktame pavyzdyje parodyta paprasta programa, kuri vartotojus pasitinka skirtingai, atsižvelgiant į tai, ar jie pirmą kartą atidaro programą, ar grįžta.

Tačiau dabartinis diegimas visada rodo pradinį sveikinimą, nepaisant naršymo toli nuo programos. Šis straipsnis padės atlikti būtinus veiksmus, kad tinkamai išsaugotumėte ir atkurtumėte veiklos būseną naudojant „onSaveInstanceState“ metodą.

komandą apibūdinimas
onSaveInstanceState(Bundle outState) Šis metodas iškviečiamas prieš sunaikinant veiklą, kad būtų išsaugota vartotojo sąsajos komponentų būsena.
putString(String key, String value) Išsaugo eilutės reikšmę rinkinyje su nurodytu raktu, kad vėliau būtų galima gauti.
getString(String key) Nuskaito eilutės reikšmę iš paketo, naudodamas nurodytą raktą.
onRestoreInstanceState(Bundle savedInstanceState) Šis metodas iškviečiamas po onStart(), kad būtų atkurta vartotojo sąsajos būsena iš anksčiau išsaugoto paketo.
setContentView(View view) Nustato veiklos turinį į aiškų rodinį, todėl jis yra išdėstymo šaknis.
TextView.setText(String text) Nustato tekstą, kuris bus rodomas TextView.
super.onCreate(Bundle savedInstanceState) Iškviečia superklasės metodą onCreate(), inicijuodamas veiklą.

Kaip išsaugoti veiklos būseną „Android“.

Pateiktuose scenarijuose tiriame, kaip išsaugoti veiklos būseną naudojant onSaveInstanceState(Bundle outState) „Android“ kūrimo metodas. Pirmasis scenarijus parodo, kaip sukurti veiklą, kurioje rodomas pasisveikinimo pranešimas, kuris keičiasi priklausomai nuo to, ar vartotojas pirmą kartą atidaro programą, ar nuėjo ir grįžo. Kritinė scenarijaus dalis apima būsenos išsaugojimą TextView naudojant onSaveInstanceState metodas. Kai veikla netrukus bus sunaikinta, šis metodas iškviečiamas UI komponentų būsenai išsaugoti. Saugome rodomą tekstą TextView naudojant putString(String key, String value) metodas, susiejantis eilutės reikšmę su nurodytu raktu Bundle.

Atkūrus veiklą, onCreate(Bundle savedInstanceState) metodas patikrina, ar yra išsaugoto egzemplioriaus būsena. Jei yra, jis nuskaito anksčiau išsaugotą tekstą naudodamas getString(String key) metodą ir grąžina jį į TextView. Taip užtikrinama, kad vartotojas pamatytų tą patį pranešimą, kurį matė prieš išvykdamas. Antrajame scenarijuje mes toliau patobuliname šį metodą, pridėdami onRestoreInstanceState(Bundle savedInstanceState) metodas, kuris vadinamas po onStart() Norėdami atkurti vartotojo sąsajos būseną iš anksčiau išsaugotos Bundle. Šis metodas tiesiogiai nustato išsaugotą tekstą į TextView, užtikrinant, kad vartotojo sąsajos būsena būtų nuosekli ir sklandžiai išsaugoma paleidus veiklą iš naujo.

Būsenos išsaugojimo diegimas „Android“ veikloje

Java Android kūrimas

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());
    }
}

Duomenų patvarumo užtikrinimas „Android“ programose

Java Android kūrimas

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));
    }
}

Būsenos išlikimo užtikrinimas keičiant konfigūraciją

Kuriant Android programas labai svarbu valdyti veiklos būseną, kai keičiama konfigūracija, pvz., ekrano pasukimas. Dėl konfigūracijos pakeitimų veikla sunaikinama ir sukuriama iš naujo, todėl netinkamai tvarkomos laikinosios vartotojo sąsajos būsenos. Naudojant onSaveInstanceState(Bundle outState) metodą, kūrėjai gali išsaugoti reikiamą vartotojo sąsajos būsenos informaciją. Šis metodas iškviečiamas prieš sunaikinant veiklą, todėl kūrėjai gali saugoti raktų ir reikšmių poras a Bundle, išsaugant būseną vėlesniam atkūrimui.

Be to, labai svarbu suprasti vaidmenį ViewModel klasė iš Android's Architecture Components. ViewModel sukurtas su vartotojo sąsaja susijusiems duomenims saugoti ir tvarkyti atsižvelgiant į gyvavimo ciklą, leidžiant duomenims išlaikyti konfigūracijos pakeitimus. Naudojant ViewModel, kūrėjai gali atsieti vartotojo sąsajos valdiklius nuo tvarkomų duomenų, todėl programa tampa patikimesnė ir lengviau prižiūrima. Sujungimas ViewModel su onSaveInstanceState suteikia išsamų sprendimą efektyviai valdyti veiklos būseną.

Dažnai užduodami klausimai apie veiklos būseną

  1. Koks tikslas onSaveInstanceState?
  2. The onSaveInstanceState metodas naudojamas norint išsaugoti esamą veiklos vartotojo sąsajos būseną prieš ją sunaikinant.
  3. Kaip atkurti aktyvumo būseną?
  4. Galite atkurti veiklos būseną onCreate metodą, patikrindami išsaugotą instancijos būseną Bundle ir atkurti išsaugotas reikšmes.
  5. Kas yra a Bundle?
  6. A Bundle yra raktų ir reikšmių porų žemėlapis, naudojamas duomenims perduoti tarp veiklų ir išsaugoti vartotojo sąsajos būseną.
  7. Koks yra vaidmuo ViewModel valstybės valdyme?
  8. ViewModel su vartotojo sąsaja susijusius duomenis saugo visą gyvavimo ciklą, išgyvena konfigūracijos pakeitimus.
  9. Kada onRestoreInstanceState paskambino?
  10. onRestoreInstanceState vadinamas paskui onStart() kai veikla iš naujo inicijuojama iš anksčiau išsaugotos būsenos.
  11. Ar galiu naudoti abu ViewModel ir onSaveInstanceState kartu?
  12. Taip, derinant ViewModel su onSaveInstanceState yra patikimas sprendimas NS būsenai valdyti atliekant konfigūracijos pakeitimus.
  13. Kokie yra „Android“ konfigūracijos pakeitimai?
  14. Konfigūracijos pakeitimai apima ekrano pasukimą, klaviatūros pasiekiamumą ir kalbos pakeitimus, dėl kurių veikla atkuriama.
  15. Kaip putString dirbti a Bundle?
  16. putString išsaugo eilutės reikšmę a Bundle su susijusiu raktu vėlesniam atkūrimui.

„Android State Management“ užbaigimas

Norint užtikrinti sklandžią naudotojo patirtį, ypač keičiant konfigūraciją, būtina efektyviai valdyti „Android“ veiklos būseną. Naudojant svertą onSaveInstanceState ir onRestoreInstanceState metodus, kūrėjai gali užtikrinti, kad vartotojo duomenys ir vartotojo sąsajos būsenos būtų išsaugomos ir atkurtos sklandžiai. Šis metodas ne tik padidina programos stabilumą, bet ir pagerina vartotojų pasitenkinimą, nes suteikia nuoseklią ir patikimą sąsają.