Kā izmantot darbības dzīves ciklu un stāvokli, kā izmantot aktivitātes dzīves ciklu un stāvokli

1. Laipni lūdzam

Šī praktiskā kodu laboratorija ir daļa no 1. nodaļas: sāciet apgūt Android izstrādātāja pamatprincipus (2. versija). Jūs iegūsit vislielāko labumu no šī kursa, ja secīgi strādājat cauri kodu laboratorijām:

  • Pilnu kursa kodu laboratoriju sarakstu skatiet sadaļā Codelabs for Android Developer Fundamentals (V2).
  • Plašāku informāciju par kursu, tostarp saites uz visām koncepcijas nodaļām, lietotnēm un slaidiem, skatiet Android izstrādātāja pamatzināšanas (2. versija).

Ievads

Šajā praksē jūs uzzināsit vairāk par aktivitātes dzīves ciklu. Dzīves cikls ir to stāvokļu kopums, kuros darbība var būt visā tās darbības laikā, sākot no tās izveides līdz brīdim, kad tā tiek iznīcināta un sistēma atgūst savus resursus. Lietotājam pārvietojoties starp darbībām jūsu lietotnē (kā arī uz lietotni un izejot no tās), darbības tiek mainītas starp dažādiem to dzīves cikla stāvokļiem.

Divkāršas problēmas

Katram aktivitātes dzīves cikla posmam ir atbilstoša atzvanīšanas metode: onCreate(), onStart(), onPause() un tā tālāk. Kad darbība maina statusu, tiek izsaukta saistītā atzvanīšanas metode. Jūs jau esat redzējis vienu no šīm metodēm: onCreate(). Ignorējot kādu no dzīves cikla atzvanīšanas metodēm savās darbību klasēs, varat mainīt aktivitātes noklusējuma uzvedību, reaģējot uz lietotāja vai sistēmas darbībām.

Aktivitātes stāvoklis var mainīties arī, reaģējot uz ierīces konfigurācijas izmaiņām, piemēram, kad lietotājs pagriež ierīci no portreta uz ainavu. Kad notiek šīs konfigurācijas izmaiņas, darbība tiek iznīcināta un atjaunota tās noklusējuma stāvoklī, un lietotājs var zaudēt informāciju, ko viņš ir ievadījis darbībā. Lai nemulsinātu lietotājus, ir svarīgi izstrādāt savu lietotni, lai novērstu neparedzētu datu zudumu. Vēlāk šajā praksē jūs eksperimentējat ar konfigurācijas izmaiņām un uzzināsit, kā saglabāt darbības stāvokli, reaģējot uz ierīces konfigurācijas izmaiņām un citiem darbības dzīves cikla notikumiem.

Šajā praksē jūs pievienojat reģistrēšanas paziņojumus lietotnei TwoActivities un novērojat darbību dzīves cikla izmaiņas, izmantojot lietotni. Pēc tam sāciet strādāt ar šīm izmaiņām un izpētīt, kā rīkoties ar lietotāja ievadi šādos apstākļos.

Priekšnoteikumi

Jums jāspēj:

  • Izveidojiet un palaidiet lietotnes projektu programmā Android Studio .
  • Pievienojiet savai lietotnei žurnāla paziņojumus un skatiet šos žurnālus Logcat rūtī.
  • Izprotiet un strādājiet ar darbību un nolūku, kā arī jūtieties ērti ar tiem mijiedarboties.

Ko jūs uzzināsiet

  • Kā darbojas darbības dzīves cikls.
  • Kad darbība sākas, tā tiek apturēta, apstājas un tiek iznīcināta.
  • Par dzīves cikla atzvanīšanas metodēm, kas saistītas ar darbības izmaiņām.
  • To darbību (piemēram, konfigurācijas izmaiņu) ietekme, kuru rezultātā var rasties darbības dzīves cikla notikumi.
  • Kā saglabāt aktivitātes stāvokli dzīves cikla notikumos.

Ko tu darīsi

  • Pievienojiet lietotnei TwoActivities kodu no iepriekšējās prakses, lai ieviestu dažādus Activity dzīves cikla atzvanus un iekļautu reģistrēšanas paziņojumus.
  • Vērojiet stāvokļa izmaiņas, kad jūsu lietotne darbojas un mijiedarbojas ar katru lietotnes darbību.
  • Pārveidojiet savu lietotni, lai saglabātu tās darbības gadījumu, kas tiek negaidīti atjaunota, reaģējot uz lietotāja rīcību vai konfigurācijas izmaiņām ierīcē.

2. Lietotņu pārskats

Šajā praksē jūs pievienojat lietotni TwoActivities . Lietojumprogramma izskatās un darbojas aptuveni tāpat kā iepriekšējā koda laboratorijā. Tajā ir divas aktivitāšu ieviešanas iespējas un lietotājam ir iespēja sūtīt starp tām. Šajā praksē veiktās izmaiņas lietotnē neietekmēs tās redzamo lietotāju uzvedību.

3. 3. 1. uzdevums: pievienojiet pakalpojumam TwoActivities dzīves cikla atzvanus

Šajā uzdevumā jūs ieviesīsit visas darbības dzīves cikla atzvanīšanas metodes, lai drukātu ziņojumus logcat, kad šīs metodes tiek izsauktas. Šie žurnāla ziņojumi ļaus jums redzēt, kad darbības dzīves cikla statuss mainās un kā šīs dzīves cikla stāvokļa izmaiņas ietekmē jūsu lietotni, kad tā darbojas.

1.1 (Neobligāti) Kopējiet projektu TwoActivities

Lai veiktu šīs prakses uzdevumus, jūs pārveidosit esošo TwoActivities projektu, ko izveidojāt pēdējā praksē. Ja vēlaties saglabāt iepriekšējo TwoActivities projektu neskartu, izpildiet pielikumā: Utilītas norādītās darbības, lai izveidotu projekta kopiju.

1.2. Ieviesiet atzvanīšanu programmā MainActivity

  1. Programmā Android Studio atveriet projektu TwoActivities un rūtī Project > Android atveriet MainActivity.
  2. Metodē onCreate() pievienojiet šādus žurnāla paziņojumus:
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
  1. Pievienojiet onStart() atzvanīšanas ignorēšanu ar paziņojumu par šo notikumu žurnālā:
@Override
public void onStart(){
    super.onStart();
    Log.d(LOG_TAG, "onStart");
}

Lai iegūtu saīsni, programmā Android Studio atlasiet Kods > Override Methods. Tiek parādīts dialoglodziņš ar visām iespējamām metodēm, kuras varat ignorēt savā klasē. Sarakstā izvēloties vienu vai vairākas atzvanīšanas metodes, šīm metodēm tiek ievietota pilnīga veidne, tostarp nepieciešamais izsaukums virsklasei.

  1. Izmantojiet metodi onStart() kā veidni, lai ieviestu dzīves cikla atzvanīšanu onPause(), onRestart(), onResume(), onStop() un onDestroy()

Visām atzvanīšanas metodēm ir vienādi paraksti (izņemot vārdu). Ja kopējat un ielīmējat onStart(), lai izveidotu šīs citas atzvanīšanas metodes, neaizmirstiet atjaunināt saturu, lai izsauktu pareizo metodi virsklasē, un reģistrētu pareizo metodi.

  1. Palaidiet savu lietotni.
  2. Noklikšķiniet uz cilnes Logcat Android Studio apakšdaļā, lai parādītu Logcat rūti. Jums vajadzētu redzēt trīs žurnāla ziņojumus, kas parāda trīs dzīves cikla stāvokļus, kuros darbība ir pārgājusi, kad tā sākās:
D/MainActivity: -------
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onResume

1.3. Ieviesiet dzīves cikla atzvanīšanu programmā SecondActivity

Tagad, kad esat ieviesis MainActivity dzīves cikla atzvanīšanas metodes, dariet to pašu ar SecondActivity.

  1. Atveriet SecondActivity.
  2. Klases augšdaļā pievienojiet mainīgajam LOG_TAG konstanti:
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
  1. Pievienojiet dzīves cikla atzvanīšanas un žurnāla paziņojumus otrajai darbībai. (Varat kopēt un ielīmēt atzvanīšanas metodes no MainActivity.)
  2. Pievienojiet žurnāla paziņojumu metodei returnReply() tieši pirms finiša() metodes:
Log.d(LOG_TAG, "End SecondActivity");

1.4. Novērojiet žurnālu, kamēr lietotne darbojas**

  1. Palaidiet savu lietotni.
  2. Noklikšķiniet uz cilnes Logcat Android Studio apakšā, lai parādītu Logcat rūti.
  3. Meklēšanas lodziņā ievadiet darbību. Android logcat var būt ļoti garš un pārblīvēts. Tā kā mainīgais LOG_TAG katrā klasē satur vai nu vārdus MainActivity vai SecondActivity, šis atslēgvārds ļauj filtrēt žurnālu tikai tām lietām, kas jūs interesē.

Divkāršas problēmas

Eksperimentējiet, izmantojot savu lietotni, un ņemiet vērā, ka dzīves cikla notikumi notiek, reaģējot uz dažādām darbībām. Jo īpaši izmēģiniet šīs lietas:

  • Izmantojiet lietotni kā parasti (sūtiet ziņojumu, atbildiet ar citu ziņojumu).
  • Izmantojiet pogu Atpakaļ, lai atgrieztos no otrās aktivitātes uz galveno darbību.
  • Izmantojiet augšupvērsto bultiņu lietotņu joslā, lai atgrieztos no otrās aktivitātes uz galveno darbību.
  • Pagrieziet ierīci gan galvenajā, gan otrajā darbībā dažādos laikos savā lietotnē un novērojiet, kas notiek * žurnālā un ekrānā.
  • Nospiediet pārskata pogu (kvadrātveida poga pa labi no sākuma) un aizveriet lietotni (pieskarieties X).
  • Atgriezieties sākuma ekrānā un restartējiet lietotni.

PADOMS. Ja izmantojat lietotni emulatorā, varat simulēt rotāciju, izmantojot taustiņu kombināciju Control+F11 vai Control+Function+F11.

1. uzdevuma risinājuma kods

Šie koda fragmenti parāda pirmā uzdevuma risinājuma kodu.

Galvenā darbība

Tālāk minētie koda fragmenti parāda pievienoto kodu MainActivity, bet ne visu klasi.

OnCreate() metode:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Log the start of the onCreate() method.
        Log.d(LOG_TAG, "-------");
        Log.d(LOG_TAG, "onCreate");

        // Initialize all the view variables.
        mMessageEditText = findViewById(R.id.editText_main);
        mReplyHeadTextView = findViewById(R.id.text_header_reply);
        mReplyTextView = findViewById(R.id.text_message_reply);
}

Citas dzīves cikla metodes:

@Override
protected void onStart() {
        super.onStart();
        Log.d(LOG_TAG, "onStart");
}

@Override
protected void onPause() {
        super.onPause();
        Log.d(LOG_TAG, "onPause");
}

@Override
protected void onRestart() {
        super.onRestart();
        Log.d(LOG_TAG, "onRestart");
}

@Override
protected void onResume() {
        super.onResume();
        Log.d(LOG_TAG, "onResume");
}

@Override
protected void onStop() {
        super.onStop();
        Log.d(LOG_TAG, "onStop");
}

@Override
protected void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "onDestroy");
}

Otrā aktivitāte

Šie koda fragmenti parāda pievienoto kodu SecondActivity, bet ne visu klasi.

SecondActivity klases augšpusē:

private static final String LOG_TAG = SecondActivity.class.getSimpleName();

Atgriešanās Reply() metode:

public void returnReply(View view) {
        String reply = mReply.getText().toString();
        Intent replyIntent = new Intent();
        replyIntent.putExtra(EXTRA_REPLY, reply);
        setResult(RESULT_OK, replyIntent);
        Log.d(LOG_TAG, "End SecondActivity");
        finish();
}

Citas dzīves cikla metodes:

Tas pats, kas iepriekš minētajā gadījumā MainActivity.

4. 4. 2. uzdevums: saglabājiet un atjaunojiet darbības instances stāvokli

Atkarībā no sistēmas resursiem un lietotāju uzvedības katra jūsu lietotnes darbība var tikt iznīcināta un rekonstruēta daudz biežāk, nekā jūs varētu domāt.

Iespējams, esat pamanījis šo darbību pēdējā sadaļā, kad pagriezāt ierīci vai emulatoru. Ierīces pagriešana ir viens no ierīces konfigurācijas izmaiņu piemēriem. Lai gan rotācija ir visizplatītākā, visu konfigurācijas izmaiņu rezultātā pašreizējā darbība tiek iznīcināta un tiek izveidota no jauna, it kā tā būtu jauna. Ja savā kodā neņemat vērā šo darbību, konfigurācijas maiņas gadījumā jūsu darbību izkārtojums var atgriezties pie noklusējuma izskata un sākotnējām vērtībām, un lietotāji var zaudēt savu vietu, datus vai progresa stāvokli programmā. jūsu lietotne.

Katras aktivitātes stāvoklis tiek saglabāts kā atslēgu/vērtību pāru kopa paketes objektā, ko sauc par darbības instances stāvokli. Sistēma saglabā noklusējuma stāvokļa informāciju instances stāvokļa komplektā tieši pirms darbības apturēšanas un nodod šo komplektu jaunajai darbības instancei, lai to atjaunotu.

Lai nezaudētu darbības datus, kad tā tiek negaidīti iznīcināta un izveidota no jauna, jums ir jāievieš onSaveInstanceState() metode. Sistēma izsauc šo metodi jūsu darbībai (starp onPause() un onStop()), ja pastāv iespēja, ka darbība var tikt iznīcināta un atjaunota.

Dati, ko saglabājat instances stāvoklī, attiecas tikai uz šo konkrētās darbības gadījumu pašreizējās lietotnes sesijas laikā. Apturot un restartējot jaunu lietotnes sesiju, darbības instances statuss tiek zaudēts un darbībai tiek atjaunots noklusējuma izskats. Ja starp lietotņu sesijām ir jāsaglabā lietotāja dati, izmantojiet koplietotās preferences vai datu bāzi. Par abiem jūs uzzināsit vēlākā praktiskajā nodarbībā.

2.1. Saglabājiet darbības gadījumu stāvokli ar onSaveInstanceState()

Iespējams, pamanījāt, ka ierīces pagriešana nemaz neietekmē otrās aktivitātes stāvokli. Tas ir tāpēc, ka otrais aktivitātes izkārtojums un stāvoklis tiek ģenerēts no izkārtojuma un nolūka, kas to aktivizēja. Pat ja darbība tiek izveidota no jauna, nolūks joprojām pastāv un šajā nolūkā esošie dati joprojām tiek izmantoti ikreiz, kad tiek izsaukta otrās aktivitātes metode onCreate().

Turklāt jūs varat pamanīt, ka katrā darbībā jebkurš teksts, ko ierakstījāt ziņojumā vai atbildes EditText elementos, tiek saglabāts pat tad, ja ierīce tiek pagriezta. Tas ir tāpēc, ka dažu skata elementu stāvokļa informācija jūsu izkārtojumā tiek automātiski saglabāta, veicot izmaiņas konfigurācijā, un pašreizējā EditText vērtība ir viens no šiem gadījumiem.

Tātad vienīgais aktivitātes stāvoklis, kas jūs interesē, ir TextView elementi atbildes galvenē un atbildes teksts galvenajā darbībā. Abi TextView elementi pēc noklusējuma ir neredzami; tie parādās tikai tad, kad no otrās aktivitātes nosūtāt ziņojumu atpakaļ uz galveno darbību.

Šajā uzdevumā jūs pievienojat kodu, lai saglabātu šo divu TextView elementu instances stāvokli, izmantojot onSaveInstanceState().

  1. Atveriet MainActivity.
  2. Pievienojiet šo onSaveInstanceState() skeleta implementāciju darbībai vai izmantojiet Code > Override Methods, lai ievietotu skeleta ignorēšanu.
@Override
public void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
}
  1. Pārbaudiet, vai galvene pašlaik ir redzama, un, ja tā, ievietojiet šo redzamības stāvokli stāvokļa komplektā, izmantojot metodi putBoolean() un atslēgu "reply_visible".
 if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
        outState.putBoolean("reply_visible", true);
    }

Atcerieties, ka atbildes galvene un teksts ir atzīmēti kā neredzami, līdz tiek saņemta atbilde no otrās aktivitātes. Ja galvene ir redzama, tad ir atbildes dati, kas ir jāsaglabā. Ņemiet vērā, ka mūs interesē tikai šis redzamības stāvoklis — faktiskais galvenes teksts nav jāsaglabā, jo šis teksts nekad nemainās.

  1. Tajā pašā čekā pievienojiet atbildes tekstu komplektam.
outState.putString("reply_text",mReplyTextView.getText().toString());

Ja galvene ir redzama, varat pieņemt, ka ir redzams arī pats atbildes ziņojums. Jums nav jāpārbauda vai jāsaglabā pašreizējais atbildes ziņojuma redzamības stāvoklis. Tikai faktiskais ziņojuma teksts nonāk stāvoklī Bundle ar atslēgu "reply_text".

Jūs saglabājat tikai to skata elementu stāvokli, kas var mainīties pēc aktivitātes izveides. Pārējos skata elementus jūsu lietotnē (RediģētText, Poga) jebkurā laikā var izveidot no noklusējuma izkārtojuma.

Ņemiet vērā, ka sistēma saglabās dažu View elementu stāvokli, piemēram, EditText saturu.

2.2. Atjaunojiet darbības instances stāvokli programmā onCreate()

Kad esat saglabājis darbības instances stāvokli, tas ir jāatjauno arī pēc darbības atjaunošanas. To var izdarīt, izmantojot onCreate(), vai ieviešot onRestoreInstanceState() atzvanīšanu, kas tiek izsaukta pēc onStart() pēc aktivitātes izveides.

Lielāko daļu laika labākā vieta darbības stāvokļa atjaunošanai ir onCreate(), lai nodrošinātu, ka lietotāja saskarne, tostarp stāvoklis, ir pieejama pēc iespējas ātrāk. Dažreiz ir ērti to izdarīt onRestoreInstanceState() pēc tam, kad ir pabeigta visa inicializācija, vai ļaut apakšklasēm izlemt, vai izmantot jūsu noklusējuma implementāciju.

  1. Metodē onCreate() pēc tam, kad skata mainīgie ir inicializēti ar findViewById(), pievienojiet testu, lai pārliecinātos, ka savedInstanceState nav nulles.
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);

// Restore the state.
if (savedInstanceState != null) {
}

Kad darbība ir izveidota, sistēma nodod statusa komplektu uz onCreate() kā vienīgo argumentu. Kad pirmo reizi tiek izsaukts onCreate() un jūsu lietotne tiek palaista, komplekts ir nulle — pirmo reizi palaižot lietotni, nav esoša statusa. Turpmākajos onCreate() izsaukumos ir komplekts, kas ir aizpildīts ar datiem, ko saglabājāt onSaveInstanceState().

  1. Šajā pārbaudē iegūstiet pašreizējo redzamību (patiesu vai nepatiesu) no komplekta, izmantojot taustiņu "reply_visible".
if (savedInstanceState != null) {
    boolean isVisible = 
                     savedInstanceState.getBoolean("reply_visible");
}
  1. Pievienojiet testu zem šīs iepriekšējās rindas mainīgajam isVisible.
if (isVisible) {
}

Ja stāvokļa komplektā ir atslēga reply_visible (un tāpēc isVisible ir patiess), jums būs jāatjauno stāvoklis.

  1. Testā isVisible padariet galveni redzamu.
mReplyHeadTextView.setVisibility(View.VISIBLE);
  1. Saņemiet atbildes teksta ziņojumu no komplekta, izmantojot atslēgu “reply_text”, un iestatiet atbildes teksta skatījumu, lai parādītu šo virkni.
mReplyTextView.setText(savedInstanceState.getString("reply_text"));
  1. Padariet redzamu arī atbildi TextView:
mReplyTextView.setVisibility(View.VISIBLE);
  1. Palaidiet lietotni. Mēģiniet pagriezt ierīci vai emulatoru, lai nodrošinātu, ka atbildes ziņojums (ja tāds ir) paliek ekrānā pēc darbības atjaunošanas.

2. uzdevuma risinājuma kods

Šie koda fragmenti parāda šī uzdevuma risinājuma kodu.

Galvenā darbība

Tālāk norādītajos koda fragmentos ir redzams programmā MainActivity pievienotais kods, bet ne visa klase.

OnSaveInstanceState() metode:

@Override
public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   // If the heading is visible, message needs to be saved.
   // Otherwise we're still using default layout.
   if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
       outState.putBoolean("reply_visible", true);
       outState.putString("reply_text", 
                      mReplyTextView.getText().toString());
   }
}

OnCreate() metode:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   Log.d(LOG_TAG, "-------");
   Log.d(LOG_TAG, "onCreate");

   // Initialize all the view variables.
   mMessageEditText = findViewById(R.id.editText_main);
   mReplyHeadTextView = findViewById(R.id.text_header_reply);
   mReplyTextView = findViewById(R.id.text_message_reply);

   // Restore the saved state. 
   // See onSaveInstanceState() for what gets saved.
   if (savedInstanceState != null) {
       boolean isVisible = 
                     savedInstanceState.getBoolean("reply_visible");
       // Show both the header and the message views. If isVisible is
       // false or missing from the bundle, use the default layout.
       if (isVisible) {
           mReplyHeadTextView.setVisibility(View.VISIBLE);
           mReplyTextView.setText(savedInstanceState
                                  .getString("reply_text"));
           mReplyTextView.setVisibility(View.VISIBLE);
       }
   }
}

Pilns projekts:

Android Studio projekts: TwoActivitiesLifecycle

5. Kodēšana

Izaicinājums: izveidojiet vienkāršu iepirkumu saraksta lietotni ar galveno darbību lietotāja veidotajam sarakstam un otru darbību parasto iepirkšanās preču sarakstam.

  • Galvenajā darbībā ir jāietver izveidojamais saraksts, kas sastāv no desmit tukšiem TextView elementiem.
  • Poga Pievienot preci galvenajā darbībā palaiž otru darbību, kurā ir iekļauts parasto iepirkšanās preču saraksts (siers, rīsi, āboli utt.). Izmantojiet pogu elementus, lai parādītu vienumus.
  • Izvēloties vienumu, lietotājs atgriežas pie galvenās darbības un atjaunina tukšu TextView, lai iekļautu izvēlēto vienumu.

Izmantojiet nolūku, lai pārsūtītu informāciju no vienas darbības citai. Pārliecinieties, vai pašreizējais iepirkumu saraksta stāvoklis tiek saglabāts, kad lietotājs pagriež ierīci.

6. Kopsavilkums

  • Darbības dzīves cikls ir darbību migrācijas stāvokļu kopa, sākot no tās pirmās izveides un beidzot ar brīdi, kad Android sistēma atgūst resursus šai darbībai.
  • Lietotājam pārejot no vienas darbības uz otru, kā arī jūsu lietotnē un ārpus tās, katra darbība tiek pārvietota starp darbību dzīves cikla stāvokļiem.
  • Katram darbības dzīves cikla stāvoklim ir atbilstoša atzvanīšanas metode, kuru varat ignorēt savā darbības klasē.
  • Dzīves cikla metodes ir onCreate(), onStart(), onPause(), onRestart(), onResume(), onStop(), onDestroy().
  • Ignorējot dzīves cikla atzvanīšanas metodi, varat pievienot darbību, kas notiek, kad darbība pāriet uz šo stāvokli.
  • Varat pievienot skeleta ignorēšanas metodes savām klasēm lietotnē Android Studio, izmantojot opciju Kods > Override.
  • Ierīces konfigurācijas izmaiņu, piemēram, pagriešanas, rezultātā darbība tiek iznīcināta un izveidota no jauna, it kā tā būtu jauna.
  • Mainot konfigurāciju, tiek saglabāta daļa no aktivitātes stāvokļa, tostarp pašreizējās EditText elementu vērtības. Attiecībā uz visiem pārējiem datiem šie dati ir skaidri jāsaglabā pašam.
  • Saglabājiet aktivitātes gadījumu stāvokli onSaveInstanceState() metodē.
  • Gadījuma stāvokļa dati tiek glabāti kā vienkārši atslēgu/vērtību pāri komplektā. Izmantojiet komplektēšanas metodes, lai ievietotu datus paketē un atgūtu no tās.
  • Atjaunojiet instances stāvokli programmā onCreate(), kas ir vēlamais veids, vai onRestoreInstanceState(). Atpakaļ