De levenscyclus van een Android-applicatie

basisgids-programmeren-android-2

Wanneer u begint met programmeren in een taal als C++ of Java, is het eerste dat u leert de hoofdmethode, het punt dat het besturingssysteem zal aanroepen wanneer we onze applicatie gaan starten.

In Android is er geen hoofdmethode als zodanig, maar er zijn verschillende methoden van onze activiteit die door de SSOO worden aangeroepen wanneer ze zich voordoen belangrijke gebeurtenissen. In dit hoofdstuk gaan we dieper in op wat die gebeurtenissen zijn en hoe ze werken. de volledige cyclus van een activiteit van Android. officiële documentatie biedt een uitgebreide uitleg over dit onderwerp, hier zullen we de belangrijkste elementen bestuderen samen met enkele veelvoorkomende fouten bij het omgaan ermee.

De levenscyclus van Android volgt dit schema:

android-levenscyclus

gebeurtenissen in de levenscyclus

  1. onCreate (bundel)
    • Het vertegenwoordigt het moment waarop de activiteit wordt aangemaakt. Deze methode wordt normaal gesproken gegenereerd door de wizard bij het maken van een nieuwe activiteit in Android, en hier zullen we alles maken wat de activiteit nodig heeft. Als we de activiteitsgegevens eerder in een Bundle-object hebben opgeslagen, kunnen we deze gebruiken om deze opnieuw te genereren. Normaal gesproken zullen we het niet gebruiken.
  2. onStart ()
    • De activiteit gaat naar op het scherm zijn, hoewel niet noodzakelijkerwijs zichtbaar. Als we van een halte komen, gaan we eerst door onRestart().
  3. onRestart ()
    • Voor onStart() bij het doorgaan van een aanroep naar onStop().
  4. onResume ()
    • De activiteit gaat van start reageren op interactie van de gebruiker.
  5. onPause ()
    • De activiteit zal stop met antwoorden naar gebruikersinteractie.
  6. onStop ()
    • Activiteit is volledig verplaatst naar achtergrond.
  7. onDestroy ()
    • De activiteit gaat vernietigd worden en de vrijgekomen middelen.

Wanneer we een van deze methoden moeten implementeren, doen we dat door deze profielen aan onze activiteit toe te voegen:

openbare klasse MyActivity breidt Activiteit uit { beschermde leegte onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... } beschermde leegte onStart() { super.onStart(); ... } beschermde leegte onRestart() { super.onRestart(); ... } beschermde nietige onResume() { super.onResume(); ... } beschermde leegte onPause() { ... super.onPause(); } beschermde leegte onStop() { ... onStop(); } beschermde leegte onDestroy() { ... super.onDestroy(); } }

Het is belangrijk om de superklasse methodeaanroep om niet voor verrassingen te komen te staan. De taken van elk evenement die boven onze activiteit staan, moeten worden gehandhaafd. Deze aanroep gaat naar het begin van de invoergebeurtenissen en naar het einde van de uitvoergebeurtenissen. Op deze manier voorkomen we verrassingen, aangezien de elementen van de activiteit die we nodig hebben maar waarover we geen controle hebben, worden gemaakt voordat ze worden gebruikt en daarna worden vernietigd.

We hoeven niet alle evenementen toe te voegen, zullen degenen die we niet nodig hebben de standaardimplementatie gebruiken. De methoden die we vaak zullen gebruiken - en het wordt niet aanbevolen om de andere aan te raken - zijn onCreate, onPause en onRestart.

De betekenis van onCreate is duidelijk: het is de plaats waar we de bronnen laden die we nodig hebben, de weergaven en al het andere dat we nodig hebben. Voor uitvoer is onPause de enige methode waarop we ons zullen concentreren. De reden om onStop en onDestroy te vermijden is dat we er geen controle over hebben. onPause wordt uitgevoerd wanneer de app uit de voorgrond komt, terwijl de andere twee worden uitgevoerd door het besturingssysteem op basis van zijn behoeften. Ze zullen misschien nooit kunnen rennen! Dit wordt gedaan om de kosten van het steeds opnieuw maken van de activiteit te vermijden als we van de activiteit naar de desktop gaan en vice versa, en het besturingssysteem zal de gebruikte bronnen alleen vrijgeven als het ze nodig heeft, en hoeft niet alles te onderhouden processen openen.

Dat houdt in dat we aannemen dat de applicatie zal sterven na het uitvoeren van onPause, en dat het van ons is laatste kans om gegevens op te slaan die we moeten opslaan en services die we gebruiken, zoals geolocatie, moeten stoppen. Als we services hebben gestopt, is onRestart de juiste plaats om ze opnieuw te starten.

Van de andere methodes hoeven we niet veel te gebruiken. Een veel voorkomend geval waarin we het nodig hebben, is wanneer we bibliotheken van derden integreren, zoals Facebook of Flurry. In deze gevallen wordt ons gevraagd om de methoden van onze activiteit aan de code te binden. Om bijvoorbeeld een Flurry-sessie te registreren, wordt ons gevraagd om de sessie te starten in de onStart-methode.

enkele bruikbare ideeën

  • Onthoud waar elk evenement voor is. Je hebt altijd onCreate nodig, en vrij vaak heb je onPause en onResume nodig om de meest verbruikende services te stoppen en opnieuw te starten.
  • Raak de andere evenementen niet aan als je het niet specifiek nodig hebt.
  • Vertrouw niet opStop en opVernietig, ze worden misschien nooit genoemd. Bewaar alles wat je nodig hebt in onPause.
  • Vermijd het gebruik van niet-definitieve statische variabelen. De app kan nog steeds worden geladen als je terugkeert, en ze behouden de waarden die ze hebben achtergelaten. Als je geen andere keuze hebt dan ze te gebruiken, zorg er dan voor dat je hun waarden reset wanneer je terugkeert naar de voorgrond.

Meer informatie - Basisgids voor programmeren in Android


Ben je geïnteresseerd in:
Hoe virussen op Android te verwijderen
Volg ons op Google Nieuws

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Actualidad Blog
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.