Ciclul de viață al aplicației pe Android

Ciclul de viață al aplicației pe Android

Ciclul de viață al unei aplicații pe Android este strict controlat de sistem și depinde de nevoile utilizatorului, de resursele disponibile etc. De exemplu, utilizatorul dorește să lanseze browserul. Decizia de a începe cererea este luată de sistem. Deși ultimul cuvânt este lăsat în spatele sistemului, acesta respectă anumite reguli definite și logice, permițându-vă să stabiliți dacă puteți descărca, întrerupe aplicația sau opriți-o. Dacă utilizatorul lucrează în prezent cu o anumită fereastră, sistemul acordă prioritate aplicației corespunzătoare. Pe de altă parte, în cazul în care fereastra nu este vizibilă, iar sistemul decide că cererea trebuie să se oprească pentru a mobiliza resurse suplimentare care urmează să fie oprit aplicarea de locuri de muncă, care are o prioritate mai mică. În Android, resursele sunt mai limitate, astfel încât Android controlează mai strictă funcționarea aplicațiilor.







Tehnici de bază ale ciclului de viață al aplicațiilor

  • protejat void onCreate ()
  • protejat void onStart ()
  • protejat void onRestart ()
  • rezervat void onResume ()
  • protejat void onPause ()
  • protejat void onStop ()
  • protejat void onDestroy ();

onCreate ()

Metoda onCreate () este apelată când o activitate este creată sau reluată. Sistemul poate porni și opri ferestrele curente, în funcție de evenimentele care apar. În cadrul acestei metode, configurați interfața de activitate statică. Inițializează datele de activitate statică, leagă datele în liste și așa mai departe. Asociază datele și resursele necesare. Specifică aspectul prin metoda setContentView ().

În această metodă, încărcați interfața cu utilizatorul, plasați linkuri către proprietățile clasei, conectați datele la controale, creați servicii și fire. Metoda onCreate () ia un obiect Bundle. Acesta conține starea interfeței de utilizator stocată în ultimul apel al handlerului onSaveInstanceState. Pentru a restaura starea sa anterioară de GUI necesitatea de a utiliza această variabilă: în interiorul onCreate () metoda sau onRestoreInstanceState superior ().

Inițializarea operațiilor care durează mult timp ar trebui efectuată în procesul de fundal, mai degrabă decât folosind metoda onCreate (). În caz contrar, puteți obține caseta de dialog ANR (aplicația nu răspunde, aplicația nu răspunde).

În această metodă, puteți verifica dacă aplicația rulează pentru prima dată sau este restaurată din memorie. Dacă valoarea variabilei savedInstanceState este nulă. aplicația este lansată pentru prima dată:

Și valoarea curentăBillTotal poate fi salvată în metoda onSaveInstanceState ():

Pentru onCreate (), apelați întotdeauna Start (). dar înainte de start () nu trebuie să meargă onCreate (). deoarece onStart () poate fi de asemenea apelat pentru a relua aplicația suspendată (aplicația este oprită de metoda onStop ()). Când apelați Start (), fereastra nu este vizibilă încă de utilizator, dar va fi vizibilă în scurt timp. Se numește chiar înainte ca activitatea să devină vizibilă pentru utilizator. Este însoțită de un apel la metoda onResume (). în cazul în care activitatea devine un prim plan, sau prin apelarea metodei onStop (). dacă se ascunde.

onResume ()

Rețineți că sistemul solicită această metodă de fiecare dată când activitatea dvs. se află în prim-plan, inclusiv atunci când o creați pentru prima oară. Astfel, trebuie să implementați onResume () pentru a inițializa componentelor, înregistrarea oricăror receptoarelor de radiodifuziune sau de alte procese pe care le sunt eliberate / suspendate în onPause () și de a efectua orice altă inițializare care trebuie să aibă loc atunci când activitatea nou activ.

Încercați să plasați un cod relativ rapid și ușor, astfel încât aplicația să rămână receptivă atunci când vă ascundeți de ecran sau mergeți în față.

Nu aveți nevoie pentru a reîncărca starea UI în ea, deoarece aceste funcții sunt atribuite procesoare onCreate () și onRestoreInstanceState.

De exemplu, după metoda onPause (). în care am întrerupt camera (vezi mai jos), pornim din nou camera:

În această metodă, trebuie să opriți animația și alte acțiuni care incarca procesorul. Înregistrați datele nesalvate, de exemplu, o schiță de scrisoare, deoarece după ce este terminată, activitatea poate fi întreruptă fără avertisment. Eliberați resursele de sistem, de exemplu, procesând date din GPS.







Încercați să plasați un cod relativ rapid și ușor, astfel încât aplicația să rămână receptivă atunci când vă ascundeți de ecran sau mergeți în față.

Pe baza arhitecturii aplicației dvs., puteți suspenda, de asemenea, executarea firelor, proceselor sau a receptoarelor de radiodifuziune până când activitatea apare în prim-plan.

De exemplu, atunci când lucrați cu o cameră foto, metoda este utilizată după cum urmează:

În același timp, nu ar trebui să utilizați funcția onPause () pentru a stoca modificările utilizatorilor (cum ar fi datele personale introduse în formular) pentru stocarea permanentă. O excepție este permisă atunci când sunteți sigur că utilizatorii se așteaptă la modificările care vor fi salvate automat (de exemplu, când compuneți e-mailuri). Cu toate acestea, ar trebui să evitați să lucrați intensiv pe onPause (). cum ar fi scrierea în baza de date, deoarece aceasta poate încetini trecerea la următoarea activitate (în loc de aceasta trebuie să efectuați o încărcare grea în timpul operației de oprire onStop ()).

Atunci când activitatea este întreruptă, toate componentele sunt stocate în memorie, iar atunci când sunt reluate, nu este nevoie să le reinițializați.

Metoda onStop () este apelată atunci când fereastra devine invizibilă utilizatorului. Acest lucru se poate întâmpla atunci când este distrus sau dacă a fost inițiată o altă activitate (existentă sau nouă), suprapusă în fereastra de activitate curentă. Întotdeauna însoțește orice apel la metoda onRestart (). dacă activitatea este returnată pentru a interacționa cu utilizatorul sau onDestroy (). dacă această activitate este distrusă.

Notă: Chiar dacă sistemul este închis activitatea dvs. când a fost oprit, încă mai păstrează statutul de obiecte, cum ar fi textul în EditText într-o instalație specială Bundle (sub forma de cheie-valoare) și le restabilește, în cazul în care utilizatorul se întoarce la aceeași instanță activitate.

În această metodă, puteți face operații complexe de păstrare a datelor: pentru suspendarea de animatii complexe, de streaming, citirile senzorilor de urmărire a cererilor GPS, cronometre, servicii sau alte procese care au nevoie doar pentru a actualiza interfața de utilizare. Nu are rost să consumați resurse (cicluri CPU sau trafic de rețea) pentru a actualiza interfața, în timp ce aceasta nu este vizibilă pe ecran. Aplicați metodele onStart () sau onRestart () pentru a relua sau a reporni aceste procese atunci când activitatea devine din nou vizibilă.

Dacă există o lipsă de memorie, sistemul poate distruge activitatea ascunsă, ocolind metoda onStop () cu apelul metodei onDestroy ().

onRestart ()

Dacă fereastra revine la modul prioritar după ce a sunat pe Stop (). apoi în acest caz se numește metoda onRestart (). Ie Se numește după ce activitatea a fost oprită și pornită din nou de către utilizator. Întotdeauna însoțită de un apel la metoda onStart ().

onRestart precede apelurile la metoda onStart () (cu excepția primei). Utilizați-l pentru acțiuni speciale care trebuie efectuate numai atunci când activitatea este reluată în starea "completă".

onDestroy ()

Metoda se numește atunci când activitatea se termină, când se apelează metoda finish () sau când sistemul distruge această instanță de activitate pentru a elibera resurse. Aceste două scenarii de distrugere pot fi definite prin apelarea metodei isFinishing (). Chemată înainte de distrugerea activității. Aceasta este ultima cerere care devine activă din sistem. Dacă o anumită fereastră se află în poziția superioară a stivei dar este invizibilă utilizatorului și sistemul decide să închidă această fereastră, se apelează metoda onDestroy (). În acest caz, metoda șterge toate datele de activitate statică. Oferă toate resursele utilizate.

Deoarece toate operațiile necesare pentru eliberarea resurselor pe care le-ați făcut în metoda onStop (). atunci în această metodă puteți să acoperiți și să verificați din nou toate resursele nelansate.

În practică, veți întâlni adesea metode onCreate (). onResume () și onPause (). Metoda onCreate () va fi apelată atunci când creați o interfață de utilizator pentru lucrul cu fereastra. Această metodă vă va permite să asociați datele cu componentele și să conectați dispozitivele de tratare a evenimentelor la componentele interfeței utilizator. Cu ajutorul funcției onPause (), puteți salva informații importante în baza de date a aplicației. Aceasta este ultima metodă securizată care va fi apelată înainte de terminarea aplicației. Metoda onDestroy () nu va fi neapărat apelată, așa că nu vă bazați pe această metodă atunci când implementați logica critică.

Pentru claritate, vom crea un exemplu în care vom pregăti un mesaj pop-up pentru fiecare metodă a ciclului de viață și vom păstra, de asemenea, o intrare în jurnal pentru rezervă. Putem vedea personal întregul ciclu de viață.

Cod pentru metode:

Rulați proiectul și urmăriți mesajele. Ele vor apărea în ordinea corectă, oferindu-vă o idee despre ciclul de viață al aplicației. De asemenea, mesajele vor fi difuzate în fereastra logcat din fila 6.Android din studio. Fiți atenți la următorul moment. Când aplicația dvs. este difuzată, faceți clic pe primul buton pentru a schimba textul în TextView. Apoi apăsați butonul Acasă (nu Back!) Pentru a ajunge la ecranul inițial. Apoi reporniți aplicația. Veți vedea că aplicația nu numește metoda onCreate (). iar textul din TextView va indica faptul că aplicația nu a fost închisă, ci doar a fost restrânsă. Acesta este un punct foarte important care trebuie înțeles. Înțelegerea acestor lucruri vă va ajuta să construiți corect logica aplicației.

Apăsați butonul Înapoi pentru a ieși din aplicație.

Butonul Acasă apăsat

După ce faceți clic pe butonul Acasă, când aplicația este lansată din lista de aplicații recent deschise sau prin intermediul pictogramei

Atunci când o altă aplicație este lansată din zona de notificare sau se deschide aplicația Setări

Butonul Înapoi este apăsat în altă aplicație sau în Setări, iar aplicația dvs. este din nou vizibilă.

Deschide caseta de dialog

Dialogul se închide

Utilizatorul răspunde la apel

Ecranul este din nou activat.

Pe comprimatele chinezești am observat uneori când anumite metode nu au funcționat.

Când rotiți, activitatea trece printr-un lanț de stări diferite. Ordinea este după cum urmează.

onPause ()
onStop ()
onDestroy ()
onCreate ()
onStart ()
onResume ()

Comandă de apel

După onCreate () - onStart ()

După ce onRestart () - onStart ()

După start () - onResume () sau onStop ()

După onResume () - onPause ()

După ce onPause () - onResume () sau onStop ()

După ce onStop () - onRestart () sau onDestroy ()

DupăDestroy () - nimic

Lectură suplimentară







Articole similare

Trimiteți-le prietenilor: