Question

J'ai lu le guide du développeur Android et quelques articles sur Internet, je suis toujours confus quant au singleTask launchmode.Prenons un exemple :

L'utilisateur lance l'App1, Android démarre une nouvelle tâche.Supposons que l'App1 crée des activités dans l'ordre suivant :

ActivityA -> ActivityB -> ActivityC

Voilà à quoi ressemble la tâche 1.

Ensuite, l'utilisateur clique sur le bouton d'accueil et choisit de lancer App2, donc la tâche 1 passe en arrière-plan et Android démarre une nouvelle tâche :tâche2, l'utilisateur fait quelque chose :

ActivityD -> ActivityE

disons maintenant ActivityE essaie de commencer ActivityB , et ActivityB a le mode de lancement singleTask.

Ce que je comprends, c'est que la tâche 1 revient au frontend et que la tâche 2 passe en arrière-plan.Et la tâche 1 ressemble maintenant à ceci :

ActivityA -> ActivityB

Ce qui signifie:

  1. Le ActivityC sera supprimé de la tâche 1 et l'activité B devient l'activité supérieure.

  2. Si l'utilisateur clique maintenant sur le bouton "Retour", il reviendra à ActivityA de la tâche 1 au lieu de revenir à ActivityE de la tâche2

Ai-je raison?

Merci

Était-ce utile?

La solution

L'activité C sera supprimée de la tâche 1 et l'activité B deviendra l'activité supérieure.

Oui, tu as raison...

ActivityC sera supprimé, c'est-à-direla méthode onDestroy de ActivityC sera appelée.Par conséquent, lorsque l'utilisateur relance la tâche 1, l'activité B s'affiche plutôt que l'activité C.

Avoir créé 2 tâches (projets) et téléchargé la même @ EnvoyerEspace.Essaye le...

Si vous regardez les androïdes Documentation ça dit

" Une activité "singleTask" permet à d'autres activités de faire partie de sa tâche.Elle est toujours à la base de sa tâche, mais d'autres activités (nécessairement des activités "standard" et "singleTop") peuvent être lancées dans cette tâche."

Ce qui signifie que lorsque vous cliquez sur le bouton d'accueil, toutes les activités situées au-dessus de l'activité de tâche unique (qui dans votre cas est ActivityB) sont supprimées de la pile.

Dans l'exemple d'application que je vous avais donné plus tôt, si vous exécutez simplement le projet "AndroidTest" et cliquez sur le bouton d'accueil dans les journaux, vous pouvez voir que la 2ème activité est mise en pause, et lorsque vous la relancez à partir des "Applications récentes". indiquez que la 2ème activité est détruite.

Dans un scénario où les activités situées au-dessus des activités à instance unique (ActivityB) ne sont pas supprimées de la pile arrière et où une autre application demande cette activité (ActivityB), elle peut ne pas être affichée et l'intention peut être supprimée.Mais cela a extrêmement moins de chances de se produire car l'utilisateur devra appuyer sur le bouton Accueil et sur la tâche/application actuelle dans le BackStack avant de pouvoir accéder à une autre tâche/application.

D'où l'avertissement

Les autres modes — singleTask et singleInstance — ne conviennent pas à la plupart des applications, car ils génèrent un modèle d'interaction probablement peu familier aux utilisateurs et très différent de la plupart des autres applications.

J'espère que cela résout vos doutes.

Autres conseils

Vous avez raison.

Pourquoi ne le testes-tu pas.

Il existe également cette application qui peut aider à expliquer le mode de lancement :

https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

enter image description here

Les sources sont à https://github.com/gnorsilva/Activities-LaunchMode-demo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top