Ce este ciclul de viață al activității Android?

În postarea mea anterioară, ați aflat că Intents permite trimiterea mesajelor de la o componentă Android la alta. Ei bine, o componentă foarte importantă este o activitate. 

Activitățile reprezintă o parte fundamentală a dezvoltării aplicațiilor Android. Și este imposibil să înțelegem activități fără să înțelegem, de asemenea, ciclurile lor de viață. În acest post, veți afla totul despre ciclul de viață al activității.

Durata ciclului de activitate

O activitate este un singur ecran în Android. Este ca o fereastră într-o aplicație desktop sau un cadru într-un program Java. O activitate vă permite să plasați împreună toate componentele sau widgeturile UI pe ecran.

Este important să înțelegeți că o activitate are un ciclu de viață: adică poate fi în una din mai multe state diferite, în funcție de ceea ce se întâmplă cu aplicația și de interacțiunea cu utilizatorul. 

Modele de ciclu de viață

Să analizăm mai atent ciclul de viață al unei activități Android. De fiecare dată când se modifică starea activității, se va solicita una dintre următoarele metode de ciclu de viață pe clasa de activitate. 

onCreate (): Se numește atunci când Activitatea este inițializată pentru prima dată. Trebuie să implementați această metodă pentru a face orice inițializare specifică activității dvs..

onStart (): Aceasta se numește prima dată când activitatea este pe cale să devină vizibilă pentru utilizator, deoarece activitatea se pregătește să ajungă în prim-plan să devină interactivă. După finalizarea apelului de apel, onResume () se va numi metoda.

onResume (): Când activitatea intră în această stare, începe să interacționeze cu utilizatorul. Activitatea continuă în această stare până când se întâmplă ceva să se concentreze din aplicație sau Activitate (cum ar fi un apel primit). Când se întâmplă acest lucru, onPause () se va numi metoda.

onPause (): Această metodă este utilizată pentru a întrerupe operațiunile care nu ar trebui să se întâmple atunci când activitatea este în stare întreruptă. Un apel la această metodă indică faptul că utilizatorul părăsește aplicația. De exemplu, într-o aplicație pentru player muzical, un apel de intrare va determina aplicația să treacă într-o stare întreruptă. Acest lucru ar trebui să dezactiveze sau să întrerupă muzica curentă. Când utilizatorul revine la aplicație, onResume () se va numi metoda.

onStop (): Această metodă se numește când activitatea nu mai este vizibilă în aplicație. Aceasta se poate întâmpla, de exemplu, atunci când o altă activitate a fost încărcată și ia întreg ecranul dispozitivului. Atunci când se numește această metodă, se spune că activitatea se află într-o stare oprită. În această stare, sistemul fie sună onRestart () pentru a aduce înapoi interactivitatea cu activitatea. Sau sună onDestroy () de distrugere a activității.

onDestroy (): Aceasta este chemată înainte ca activitatea să fie distrusă. Sistemul numește această metodă când un utilizator anulează activitatea sau deoarece sistemul distruge temporar procesul care conține activitatea pentru a economisi spațiu. Asigurați-vă că eliberați toate resursele pe care le-ați creat Activitatea în această metodă, sau că aplicația va avea o scurgere de memorie!

onRestart (): Aceasta se numește atunci când o Activitate repornește după ce a fost oprită.

Pornirea unei activități

Majoritatea interacțiunilor utilizatorilor cu o aplicație determină modificarea Activității active. Deci, o aplicație trece de la Activități de mai multe ori în timpul vieții.

Este necesar să se unească împreună activitățile când o activitate trebuie să înceapă o altă activitate. Pentru a începe o activitate, fie utilizați startActivity () sau startActivityForResult (). Trebuie să treci un Intent în oricare caz.

Pornirea unei activități fără rezultat așteptat

startActivity () este utilizat în cazul în care noua activitate inițiată nu are nevoie să returneze un rezultat.

Următorul fragment de cod arată cum puteți începe o altă activitate utilizând această metodă:

Intenția intenției = intenția nouă (aceasta, SecondActivity.class); startActivity (intenție);

De asemenea, puteți efectua acțiuni, cum ar fi transmiterea datelor de la o activitate la alta. În acest caz, activitatea curentă (activitatea de apelare) dorește să transmită datele unei activități vizate. Aici intențiile vin la îndemână. Pentru a afla mai multe despre utilizarea intențiilor pentru a începe o activitate, consultați articolul meu anterior.

Pornirea unei activități cu un rezultat

startActivityForResult () este folosit pentru a porni o altă activitate și se așteaptă să obțină date din noua activitate inițiată. Cu alte cuvinte, utilizați acest lucru atunci când doriți să obțineți un rezultat din activitatea țintă înapoi la activitatea de apelare, de ex. dacă activitatea vizată colectează anumite informații de utilizator într-un dialog modal.

Primiți rezultatul din Activitate în onActivityResult (int requestCode, int resultCode, date Intent) metodă. Rezultatul va fi returnat ca intenție.

Exemplu de pornire a unei activități

Iată un exemplu pentru a arăta cum începe să funcționeze o Activitate.

În primul rând, vă creați Activitate principala cu tine onCreate () metoda, un fișier de aspect și un cod de solicitare.

 clasa publica MainActivity extinde Activitatea // Cod unic de cerere pentru fiecare caz de utilizare privat final final int REQUEST_CODE_EXAMPLE = 0x9345; @Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); 

În tine onCreate () , veți crea o nouă instanță cu intenția de a începe cea de-a doua activitate. 

Când sunteți gata să începeți această activitate, să răspundeți la un clic pe buton, veți apela startActivityForResult (), care va trece intenția nou creată și codul solicitării.

 // Creați o nouă instanță de Intenție pentru a începe Finalitatea SecondActiv Intent intent = new Intent (this, SecondActivity.class); // Aceasta inițiază SecondActivity cu codul de cerere startActivityForResult (intent, REQUEST_CODE_EXAMPLE);

Încă în tine Activitate principala, trebuie să rezolvați evenimentele privind rezultatele activității. Faceți asta prin implementarea onActivityResult ()  metodă. Acesta este modul în care veți primi rezultatul din cealaltă activitate. 

Iată cum ar trebui să arate:

 // onActivityResult se numește // numai când cealaltă activitate a început să utilizeze inițial startActivityForResult @Override public void onActivityResult (int requestCode, int resultCode, date intelect) super.onActivityResult (requestCode, resultCode, data); // Mai întâi trebuie să verificăm dacă codul de solicitare corespunde celui pe care l-am folosit. dacă (requestCode == REQUEST_CODE_EXAMPLE) // ResultCode este setat de SecondActivity // Prin convenție RESULT_OK înseamnă că orice // SecondActivity a fost executat cu succes dacă (resultCode == Activity.RESULT_OK) // Obținerea rezultatului returnat Intent final Rezultatul șirului = data.getStringExtra (SecondActivity.EXTRA_DATA); // Utilizați datele - în acest caz, afișați-le într-un toast. Toast.makeText (aceasta, "Rezultat:" + rezultat, Toast.LENGTH_LONG) .show ();  altfel // setResult nu a fost executat cu succes de SecondActivity // Din cauza unei erori sau a unui flux de control. Nu există date pentru a fi preluate. 

Acum mergeți mai departe și creați-vă SecondActivity. Ar trebui să arate ceva de genul codului de mai jos.

 @Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_detail); butonul final Buton = (Buton) findViewById (R.id.button); // Când se face clic pe acest buton dorim să întoarcem un buton rezultat.setOnClickListener new View.OnClickListener () @Override public void onClick (View view) // Creați un obiect intent nou ca container pentru rezultatul final Data intenției = nou intent (); // Adăugați datele necesare pentru a fi returnate la MainActivity data.putExtra (EXTRA_DATA, "Unele date interesante!"); // Setați resultCode ca Activity.RESULT_OK pentru a indica succesul și a atașa intenția // care conține setul nostru de rezultate setResult (Activity.RESULT_OK, data); // Cu finisajul () închidem secțiunea SecondActivity pentru a reveni la finalul MainActivity ();); 

Terminarea unei activități

Înainte de încheierea unei activități, se vor apela metodele corespunzătoare ciclului de viață.

onPause () metoda ar trebui să oprească toate ascultătorii și actualizările UI. onStop () metoda ar trebui să salveze datele aplicației. În cele din urmă, onDestroy () metoda va elibera orice resurse pe care Activitatea le-a alocat. 

Când utilizatorul revine la o aplicație care a fost oprită de sistem, onResume () se numește metoda. Pe baza datelor salvate, poate reînregistra ascultătorii și poate declanșa actualizări ale UI.

Starea instanței de activitate

O activitate are nevoie de o modalitate de a păstra valoroase date de stare și de utilizator pe care le-a obținut. Aceste date pot fi obținute din intrările utilizatorului sau create în timp ce Activitatea nu a fost afișată pe ecran.

De exemplu, o schimbare a orientării dispozitivului poate determina distrugerea și recrearea unei activități. Într-un astfel de scenariu, trebuie să vă asigurați că ați salvat întreaga stare de activitate înainte de a fi distrusă și reîncărcați-o din nou când este recreată. În caz contrar, orice date pe care activitatea dvs. le are în acel moment pot fi complet pierdute.

Pentru a salva starea activității, puteți să o înlocuiți onSaveInstanceState () metodă. Această metodă este trecută a Pachet obiect ca parametru. Un pachet poate conține șiruri de caractere, tipuri primitive de date sau obiecte. În această metodă, pur și simplu adăugați la pachet toate datele importante de stare. Acest pachet va fi returnat activității mai târziu, astfel încât să puteți restabili starea Activitate.

Pentru a extrage starea salvată din pachet și ao restabili, implementați onRestoreInstanceState () metodă. Acest apel invers este invocat între onStart () si onResume () ciclurilor de viață.

Vom examina mai profund situația instanței de activitate într-un articol viitor.

Concluzie

După ce ați urmat această postare, veți avea o bună înțelegere a modului în care funcționează un ciclu de viață al activității. Și ați aflat că există două modalități de a începe o activitate, precum și obținerea unor indicii privind modul de gestionare a instanței în ciclul de viață al activității.

Vă mulțumim pentru citire și în timp ce sunteți aici, verificați câteva dintre celelalte postări despre codificarea aplicațiilor Android.

Cod