• Aucun résultat trouvé

Programmation Android IV. Cycle de vie d’une application Android

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation Android IV. Cycle de vie d’une application Android"

Copied!
42
0
0

Texte intégral

(1)

Programmation Android IV. Cycle de vie d’une

application Android

(2)

Plan

1 Vue globale du cycle de vie

2 Démarrage d’une activité

3 Pause et unpause

4 Arrêt et redémarrage

5 Destruction

6 Restauration

7 Lifecycle-Aware Components

(3)

Vue globale du cycle de vie

Cycle de vie d’une application Android

État d’une activité

Au fil des interactions utilisateurs, une activité peut être dans un des 4 états suivants

resumed: en avant plan

paused: perte de focus mais encore visible (encore entièrement en mémoire)

stopped: complètement obscurcie par une autre activité (peut être tuée pour récupérer de la mémoire)

off: non démarrée. Le système peut terminer une activité en pause ou stoppée, elle repasse alors dans l’état off et devra être entièrement redémarrée

(4)

Vue globale du cycle de vie

Cycle de vie d’une application Android

Lifecycle callback methods

Le changement d’un état à un autre provoque l’appel automatique d’une méthode spécifique de l’activité : un callback

Implémenter dans les bonnes méthodes les bons traitements est essentiel pour la robustesse et la performance de

l’application. Cela permet d’éviter notamment

un plantage si l’utilisateur reçoit un coup de téléphone ou navigue vers une autre appli

la consommation inutile de ressources système si l’utilisateur n’utilise pas activement l’appli

la perte des données utilisateur de l’appli si ce dernier quitte puis revient sur celle-ci plus tard

un plantage ou la progression de l’utilisateur lors d’une rotation du dispositif (portrait / paysage)

(5)

Vue globale du cycle de vie

Cycle de vie d’une application Android

(6)

Vue globale du cycle de vie

Cycle de vie : interactions utilisateurs

(7)

Vue globale du cycle de vie

Cycle de vie d’une application Android

Gestion du cycle de vie

le système appelle automatiquement les méthodes correspondantes en fonction des interactions utilisateurs

onCreate started resumed stopped destroyed

gestion cycle de vie =redéfinition des méthodes-clés Il n’est pas obligatoire de tout redéfinir,onCreatepeut suffire

(8)

Vue globale du cycle de vie

Doc android.app.Activity

Activity

(9)

Vue globale du cycle de vie

Doc android.app.Activity

Activity

(10)

Démarrage d’une activité

Démarrage d’une activité via le mani- fest

Dans le fichierAndroidManifest.xml

Lorsque l’activité est démarée, le système instancie l’activité et appelle sa méthodeonCreate

(11)

Démarrage d’une activité

Exemple de redéfinition de onCreate

(12)

Démarrage d’une activité

Démarrage :

onCreateonStartonResume

(13)

Pause et unpause

(1) Perte de focusPaused

Intervient lorsqu’une autre activité non bloquante visuellement passe au premier plan (sélection, dialogues, etc.)

Premier signe que l’utilisateur va quitter l’application

(14)

Pause et unpause

Que faire dans onPause

Relâcher les ressources et stopper l’utilisation du CPU : Stopper les animations et tout ce qui peut consommer du CPU

Enregistrer les changements non sauvés (uniquement ce qui a un intérêt pour l’application, pas de données utilisateur) rendre au système la main sur les ressources utilisées : réseau, senseurs (e.g. GPS, caméra).

et d’une manière générale, éviter les traitements coûteux en CPU

(15)

Pause et unpause

Exemple

Note : l’instance de l’activité est gardée en mémoire : pas besoin de réinitialiser les composants utilisés

(16)

Pause et unpause

(2) Reprise de focusOnResume

Intervient à chaque prise de focus, y compris la première fois

(17)

Pause et unpause

Exemple

Méthode appelée à chaque prise de focus, y compris la première fois

(18)

Arrêt et redémarrage

Arrêt et redémarrage

Scénarios

L’utilisateur bascule sur une autre application puis revient via le menu des applications

Une action de l’activité démarre une autre activité : l’activité est stoppée dès que la deuxième est créée.

Appel téléphonique

(19)

Arrêt et redémarrage

Arrêt et redémarrage

L’activité reste en mémoire : pour des applications simples, onPausepeut être suffisant

(20)

Arrêt et redémarrage

Exemple

Note : la sauvegarde des états des Vuespossédant un android :idest automatique (Bundle) : e.g. valeurs des

(21)

Arrêt et redémarrage

onRestartonStart

La plupart des applications ne redéfinisse pasonRestart

(22)

Arrêt et redémarrage

Exemple

(23)

Destruction

onDestroy : appelée lors de la des- truction

Dernière chance de relâcher des ressources et/ou de nettoyer les écouteurs d’événements système

(24)

Destruction

Destruction complète

instance de l’activité perdue

arrêts normaux

L’utilisateur a supprimé l’activité ou cliqué son boutonClose L’activité a appelée sa méthodefinish()

arrêts forcés

le système détruit l’activité pour récupérer des ressources rotation de l’écran : destruction puis reconstruction, i.e. pour l’utilisation d’un layout spécifique

(25)

Restauration

Sauvegarde / Restauration

Restauration dans l’état où l’utilisateur a quitté : 2 cas

Activité détruite puis recréée, l’activité doit restaurer l’état précédent

l’activité est stoppée, puis réactivée : état intact

(26)

Restauration

Sauvegarde de données addition- nelles (1)

1.onSaveInstanceState(Bundle): appelée après onStop) (avant si v. < 3.0). LeBundleest prérempli pour les Views ayant un ID.⇒onSaveInstanceStateest utilisée pour faire des sauvegardes supplémentaires qui seront utilisées paronRestoreInstanceState(Bundle)lorsque l’activité est recréée (2) suite à une destruction (volontaire ou

(27)

Restauration

Exemple

(28)

Restauration

Restauration de l’état d’une activité

(2) et/ou (3)

(29)

Restauration

Restauration de l’état d’une activité

Dans la méthodeonCreate:

(30)

Restauration

Restauration de l’état d’une activité

Mieux !Dans la méthodeonRestoreInstanceState:

Pas besoin de tester que le Bundle n’est pas null car cette méthode n’est appelée que si c’est le cas.

(31)

Restauration

Restauration de l’état d’une activité

Mieux !Dans la méthodeonRestoreInstanceState:

Pas besoin de tester que le Bundle n’est pas null car cette méthode n’est appelée que si c’est le cas.

(32)

Lifecycle-Aware Components

En pratique, il y a des limites

Tous les composants ayant besoin de réagir au cycle de vie sont gérés dans les méthodes de l’activité

Mauvaise organisation du code Facilite l’introduction d’erreurs

(33)

Lifecycle-Aware Components

Lifecycle-Aware Components

androidx.lifecyclefournit des classes, interfaces et annotations permettant de coder des composants qui

réagissent automatiquement au changement d’état du cycle de vie d’une activité.

Nécessite l’ajout d’une dépendance dans le fichier build de gradle voir ici pour l’ajouter

(34)

Lifecycle-Aware Components

Sans la librairie (location use case )

(35)

Lifecycle-Aware Components

onStop peut finir avant que onStart

soit achevée

(36)

Lifecycle-Aware Components

androidx.lifecycle.LifeCycle

Solution : gérer et propager les événements du cycle de vie grâce à une instance deLifeCyclecréée pour l’activité LifeCyclemodélise l’état du cycle de vie d’un composant (activité) et permet aux autres objets de l’observer.

Contient deux énumérations principales

LifeCycle.Event: événements du cycle de vie.

LifeCycle.State: état actuel du composant suivi.

(37)

Lifecycle-Aware Components

androidx.lifecycle.LifeCycle

(38)

Lifecycle-Aware Components

DefaultLifecycleObserver

(39)

Lifecycle-Aware Components

L’interface LifecycleOwner

Elle est implémentée parAppCompatActivityetFragment

⇒définit la méthodegetLifecycle()qui renvoie l’instance deLifeCycleassociée à l’activité : à donner aux objets intéressés

(40)

Lifecycle-Aware Components

MyLocationListener

(41)

Lifecycle-Aware Components

LifeCycleRegistry

On peut implémenter sont propreLifecycleOwner:

(42)

Conclusion

Résumé global

Ce cours reprend largement les tutoriaux en ligne proposés par Google :

Android developers

Références

Documents relatifs

• L’application doit déclarer ce que l’application contient (ses composants, notamment les activités et services,…) dans un fichier AndroidManifest.xml. • Le

• Ressources = toutes les données (autres que le code) utilisées par l'application. • Rangées dans le dossier res, puis incluses dans

For more information on using Google Maps in Android application

Il s'agit de développer un système qui sera utilisé dans un cadre médicale par la clinique de l'Ecole Supérieur d'Ostéopathie (à 500m de l'ESIEE) pour évaluer quantitativement

La plate-forme Android • Confi gurer l’environnement de développement • Confi gurer le SDK, Eclipse, le module ADT, l’ap- pareil virtuel Android • Maîtriser l’émulateur

Ce sont des supports de cours mis à votre disposition pour vos études sous la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes

Together we have developed Android TM , the first complete, open, and free mobile

Appy pie pour android gratuits sur les applications rend difficile sur comment créer une application gratuite où vous aurez besoin pour toutes les sites.. Lxtream application