El cicle de vida d'una aplicació d'Android

guia-bàsica-programacio-android-2

Quan es comença a programar en un llenguatge com C ++ o Java, el primer que s'ensenya és el mètode main, el punt a què dirà el sistema operatiu quan anem a arrencar la nostra aplicació.

En Android no hi ha un mètode main com a tal, però sí que hi ha diversos mètodes de la nostra activitat que seran cridats per l'SSOO quan ocorrin esdeveniments importants. En aquest capítol estudiarem a fons quins són aquests esdeveniments, i com funciona el cicle complet d'una activitat d'Android. La documentació oficial ofereix una explicació extensa d'aquest tema, aquí estudiarem els elements més importants juntament amb alguns errors comuns a l'hora de manejar-los.

El cicle de vida d'Android segueix aquest esquema:

android-lifecycle

Els esdeveniments de l'cicle de vida

  1. onCreate (Bundle)
    • Representa el moment en què l'activitat es crea. Aquest mètode normalment el generarà l'assistent a l'crear una nova activitat en Android, i és on crearem tot el que vagi a necessitar l'activitat. Si abans hem salvat les dades de l'activitat en un objecte Bundle, podrem utilitzar-lo per regenerar-la. Normalment no el farem servir.
  2. onStart ()
    • L'activitat passarà a estar a la pantalla, Encara que no necessàriament visible. Si venim d'una parada, passarem abans per onRestart ().
  3. onRestart ()
    • Anterior a onStart () quan procedim d'una crida a onStop ().
  4. onResume ()
    • L'activitat va començar a respondre a la interacció de l'usuari.
  5. onPause ()
    • L'activitat va deixar de respondre a la interacció de l'usuari.
  6. onStop ()
    • L'activitat ha passat completament a segon pla.
  7. onDestroy ()
    • l'activitat serà destruïda i els seus recursos alliberats.

Quan necessitem implementar un d'aquests mètodes, ho farem afegint a la nostra activitat amb aquests perfils:

public class MiActividad extends Activity {protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); ...} protected void onStart () {super.onStart (); ...} protected void onRestart () {super.onRestart (); ...} protected void onResume () {super.onResume (); ...} protected void onPause () {... super.onPause (); } Protected void onStop () {... onStop (); } Protected void onDestroy () {... super.onDestroy (); }}

És important mantenir la crida a mètode de la superclasse per no trobar-nos amb sorpreses. Les tasques de cada esdeveniment que estan per sobre de la nostra activitat s'han de mantenir. Aquesta crida anirà a el principi dels esdeveniments d'entrada, i a la fi dels de sortida. D'aquesta manera ens evitarem sorpreses, ja que els elements de l'activitat que necessitem però que no estaran sota el nostre control estaran creats abans d'usar-los, i es destruiran després.

No hem d'afegir tots els esdeveniments, Els que no necessitem faran servir la implementació per defecte. Els mètodes que sovint utilitzarem -i no es recomana tocar els altres- són onCreate, onPause, i onRestart.

El significat de onCreate és clar: és el lloc on carregarem els recursos que necessitem, les vistes, i qualsevol altra cosa que necessitem. Per a la sortida, l'únic mètode en el qual ens centrarem és onPause. La raó d'evitar onStop i onDestroy és que no tenim cap control sobre elles. onPause s'executarà sempre que l'aplicació surti de primer pla, mentre que els altres dos els executarà el sistema operatiu en funció de les seves necessitats. ¡Potser mai arribin a executar-se! Això es fa per evitar el cost que té crear l'activitat cop i un altre si passem de l'activitat a l'escriptori i viceversa, i el sistema operatiu només alliberarà els recursos utilitzats si els necessita, i no té per atendre tots els processos oberts.

Això implica que assumirem que l'aplicació morirà després d'executar onPause, i que és la nostra última oportunitat de salvar les dades que necessitem salvar, i d'aturar serveis que estiguem utilitzant, com la geolocalització. Si hem parat serveis, el lloc adequat per a reiniciar-los és onRestart.

Els altres mètodes no necessitarem usar-los molt. Un cas habitual en el qual sí ens caldrà serà quan integrem llibreries de tercers, com Facebook o Flurry. En aquests casos, se'ns demanarà que unim els mètodes de la nostra activitat al seu codi. Per exemple, per registrar una sessió de Flurry se'ns demanarà que la sessió comenci en el mètode onStart.

Algunes idees útils

  • Recorda per a què serveix cada esdeveniment. Sempre necessitaràs onCreate, i bastant sovint et caldrà onPause i onResume per aturar i rellançar els serveis que més consumeixin.
  • No toquis els altres esdeveniments si no ho necessites expressament.
  • No confiïs en onStop i onDestroy, podrien no dir-mai. Salva tot el que necessitis en onPause.
  • Evita utilitzar variables estàtiques no finals. L'aplicació pot seguir carregada quan tornis, i conservaran els valors amb els que es van quedar. Si no tens més remei que usar-les, assegura't de reiniciar els seus valors a el tornar a el primer pla.

Més informació - Guia bàsica de programació en Android


T'interessa:
Com eliminar virus en Android
Segueix-nos a Google News

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Actualitat Bloc
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.