Modes de lancement des activités

Modes de lancement des activités – standard

Dans les projets concrets, nous devons choisir le bon mode de lancement pour chaque activité selon nos besoins.

Il existe quatre modes de lancement :

standard, singleTop, singleTask et singleInstance

Vous pouvez définir l’attribut launchMode d’une activité dans AndroidManifest.xml

standard est le mode de lancement par défaut

Si rien n’est précisé, toutes les activités utilisent ce mode

Avec ce mode, chaque nouvelle activité est placée au sommet de la pile

Le système ne vérifie pas si cette activité existe déjà dans la pile.

Une nouvelle instance de l’activité est créée à chaque lancement

Activité principale –> Activité normale —> lancer l’activité principale (nouvelle instance)

Pour cette nouvelle activité principale, le système ignore l’instance originale

Voyons une démonstration ci-dessous

Ajoutez un bouton dans l’activité principale. Dans le gestionnaire de clic du bouton, utilisez Intent pour relancer l’activité principale

Question : on dirait qu’un seul appui sur retour suffit à fermer l’application

Quelqu’un sait pourquoi ?

Partagez votre découverte si vous trouvez la réponse.

Modes de lancement des activités – singleTop

Lorsqu’une activité est configurée en singleTop, le système vérifie avant son lancement si elle se trouve déjà au sommet de la pile de retour. Si c’est le cas, l’instance existante est réutilisée, sans créer de nouvelle instance.

Testons cela. Définissez l’attribut launchMode de l’activité principale à singleTop dans AndroidManifest.xml

Maintenant, peu importe le nombre de clics sur le bouton, aucune nouvelle instance de l’activité principale ne sera créée. Le journal ne s’affiche qu’une seule fois.

Un appui sur retour permet de quitter l’application Android

En revanche, si l’activité n’est pas au sommet de la pile, une nouvelle instance peut être créée

Modifions l’Intent pour ouvrir une autre activité en premier,

puis lançons l’activité principale depuis cette seconde activité.

Quand nous sommes sur la seconde activité, le sommet de la pile n’est pas l’activité principale, donc une nouvelle instance sera créée.

I/Choreographer: Skipped 37 frames!  The application may be doing too much work on its main thread.Langage du code : HTTP (http)

Problème : le bouton retour renvoie vers le bureau (deux cours précédents)

Cela venait d’un appel supplémentaire à finish(); dans le code du bouton

Log.e(TAG, this.toString()); afficher l’adresse mémoire de l’activité actuelle

Mode singleTask

Avec singleTask, une activité ne peut avoir qu’une seule instance dans toute l’application.

À l’inverse, singleTop garantit une instance unique seulement si l’activité est au sommet de la pile.

Mode singleInstance et les tâches Task

Avec ce mode, le système crée une pile de retour indépendante pour gérer cette activité

Exemple : nous avons trois activités. Si la seconde activité est en launchMode singleInstance, elle est gérée par une pile de retour séparée.

Nous passons de l’activité 1 vers l’activité 2, puis de l’activité 2 vers l’activité 3.

Quand on appuie sur retour depuis l’activité 3, on revient d’abord à l’activité 1, car elles appartiennent à la même pile de retour.

Un nouvel appui sur retour depuis l’activité 1 nous amène vers l’activité 2. La pile de l’activité 1 est vide, le système bascule alors vers le sommet de l’autre pile de tâche, l’activité 2. Un dernier appui sur retour renvoie à l’écran d’accueil.

public void onClick(View view){
    Intent it = new Intent(NormalActivity.this,Activity3.class);
    startActivity(it);
    finish();
}Langage du code : JavaScript (javascript)
05-13 08:14:26.890 4746-4746/com.foxdevelop.www.lifedemo E/Activité principale: 113
05-13 08:14:33.755 4746-4746/com.foxdevelop.www.lifedemo E/Activité normale: 114
05-13 08:14:37.932 4746-4746/com.foxdevelop.www.lifedemo E/Troisième activité: 113

Modes de lancement des activités

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *