Tegevuse oleku säilitamine Androidis koos eksemplari oleku salvestamisega

Tegevuse oleku säilitamine Androidis koos eksemplari oleku salvestamisega
Tegevuse oleku säilitamine Androidis koos eksemplari oleku salvestamisega

Aktiivseisundi säilitamise mõistmine

Tegevuse oleku salvestamine Androidis võib olla mõnevõrra segane, eriti Androidi SDK platvormi uutele arendajatele. Siin toodud näide demonstreerib lihtsat rakendust, mis tervitab kasutajaid erinevalt olenevalt sellest, kas nad avavad rakenduse esimest korda või naasevad.

Praegune rakendus kuvab aga alati esialgse tervituse, olenemata rakendusest eemale liikumisest. See artikkel juhendab teid tegevuse oleku õigeks salvestamiseks ja taastamiseks, kasutades meetodit „onSaveInstanceState”.

Käsk Kirjeldus
onSaveInstanceState(Bundle outState) Seda meetodit kutsutakse välja enne tegevuse hävitamist, et salvestada kasutajaliidese komponentide olek.
putString(String key, String value) Salvestab stringi väärtuse määratud võtmega komplekti hilisemaks hankimiseks.
getString(String key) Otsib määratud võtme abil komplektist stringi väärtuse.
onRestoreInstanceState(Bundle savedInstanceState) Seda meetodit kutsutakse pärast onStart() kasutajaliidese oleku taastamiseks varem salvestatud komplektist.
setContentView(View view) Määrab tegevuse sisu selgeks vaateks, muutes selle paigutuse juureks.
TextView.setText(String text) Määrab teksti, mida TextView kuvab.
super.onCreate(Bundle savedInstanceState) Kutsub välja superklassi meetodi onCreate(), initsialiseerides tegevuse.

Kuidas salvestada tegevuse olekut Androidis

Kaasasolevates skriptides uurime, kuidas salvestada tegevuse olekut kasutades onSaveInstanceState(Bundle outState) meetod Androidi arendamisel. Esimene skript demonstreerib tegevuse loomist, mis kuvab tervitussõnumi, mis muutub olenevalt sellest, kas kasutaja avab rakenduse esimest korda või on eemale navigeerinud ja naasnud. Skripti kriitiline osa hõlmab oleku salvestamist TextView kasutades onSaveInstanceState meetod. Kui tegevus on hävitamisel, kutsutakse see meetod kasutajaliidese komponentide oleku salvestamiseks. Salvestame kuvatava teksti TextView kasutades putString(String key, String value) meetod, mis seostab stringi väärtuse määratud võtmega Bundle.

Tegevuse taasloomisel onCreate(Bundle savedInstanceState) meetod kontrollib, kas on olemas salvestatud eksemplari olek. Kui see on olemas, hangib see varem salvestatud teksti, kasutades nuppu getString(String key) meetod ja seab selle tagasi väärtusele TextView. See tagab, et kasutaja näeb sama sõnumit, mida ta nägi enne navigeerimist. Teises skriptis täpsustame seda lähenemisviisi veelgi, lisades onRestoreInstanceState(Bundle savedInstanceState) meetod, mida nimetatakse pärast onStart() kasutajaliidese oleku taastamiseks varem salvestatud olekust Bundle. See meetod määrab salvestatud teksti otse TextViewtagades, et kasutajaliidese olek on järjepidev ja säilib sujuvalt kogu tegevuse taaskäivitamisel.

Oleku säästmise rakendamine Androidi tegevustes

Java Androidi arendus

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

Andmete püsivuse tagamine Androidi rakendustes

Java Androidi arendus

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

Oleku püsivuse tagamine konfiguratsioonimuudatuste ajal

Androidi rakenduste arendamisel on konfiguratsioonimuudatuste, näiteks ekraani pööramise ajal aktiivsuse oleku haldamine ülioluline. Konfiguratsioonimuudatused põhjustavad tegevuste hävitamise ja taasloomise, mis viib ajutiste kasutajaliidese olekute kadumiseni, kui neid ei käsitleta õigesti. Kasutades onSaveInstanceState(Bundle outState) meetodit kasutades saavad arendajad vajaliku kasutajaliidese olekuteabe salvestada. Seda meetodit kutsutakse välja enne tegevuse hävitamist, võimaldades arendajatel salvestada võtme-väärtuse paare a-sse Bundle, säilitades seisundi hilisemaks taastamiseks.

Lisaks on oluline mõista selle rolli ViewModel klassi Androidi arhitektuurikomponentidest. ViewModel on loodud kasutajaliidesega seotud andmete salvestamiseks ja haldamiseks elutsükliteadlikult, võimaldades andmetel konfiguratsioonimuudatusi üle elada. Kasutades ViewModel, saavad arendajad kasutajaliidese kontrollerid nende käsitletavatest andmetest lahti siduda, muutes rakenduse töökindlamaks ja hõlpsamini hooldatavaks. Kombineerimine ViewModel koos onSaveInstanceState pakub terviklikku lahendust tegevuse oleku tõhusaks haldamiseks.

Korduma kippuvad küsimused tegevuse oleku kohta

  1. Mis on eesmärk onSaveInstanceState?
  2. The onSaveInstanceState meetodit kasutatakse tegevuse praeguse kasutajaliidese oleku salvestamiseks enne selle hävitamist.
  3. Kuidas taastada aktiivsuse olekut?
  4. Tegevusoleku saate taastada rakenduses onCreate meetodit, kontrollides salvestatud esinemise olekut Bundle ja salvestatud väärtuste otsimine.
  5. Mis on a Bundle?
  6. A Bundle on võtme-väärtuste paaride kaart, mida kasutatakse andmete edastamiseks tegevuste vahel ja kasutajaliidese oleku salvestamiseks.
  7. Mis on roll ViewModel riigi juhtimises?
  8. ViewModel salvestab kasutajaliidesega seotud andmeid elutsükliteadlikult, ellujäädes konfiguratsioonimuudatused.
  9. Kui on onRestoreInstanceState helistas?
  10. onRestoreInstanceState kutsutakse järgi onStart() kui tegevust taaskäivitatakse varem salvestatud olekust.
  11. Kas ma saan kasutada mõlemat ViewModel ja onSaveInstanceState koos?
  12. Jah, kombineerides ViewModel koos onSaveInstanceState pakub tugevat lahendust kasutajaliidese oleku haldamiseks konfiguratsioonimuudatuste ajal.
  13. Millised on konfiguratsioonimuudatused Androidis?
  14. Konfiguratsioonimuudatused hõlmavad ekraani pööramist, klaviatuuri saadavust ja keelemuutusi, mis põhjustavad tegevuse uuesti loomise.
  15. Kuidas putString töötama a Bundle?
  16. putString salvestab stringi väärtuse a-sse Bundle seotud võtmega hilisemaks otsimiseks.

Androidi olekuhalduse kokkuvõte

Androidi tegevuse oleku tõhus haldamine on sujuva kasutuskogemuse säilitamiseks hädavajalik, eriti konfiguratsiooni muutmise ajal. Võimendades onSaveInstanceState ja onRestoreInstanceState meetodite abil saavad arendajad tagada kasutajaandmete ja kasutajaliidese olekute sujuva säilitamise ja taastamise. See lähenemisviis mitte ainult ei suurenda rakenduse stabiilsust, vaid parandab ka kasutajate rahulolu, pakkudes ühtset ja usaldusväärset liidest.