Aller au contenu

Recommended Posts

Posté(e) (modifié)

Bonjour tout le monde,

Je ne comprends pas trop comment fonctionne la restauration d'une application lorsqu'elle est composée d'une stack de N activities...

Je m'explique :

Supposons une application de 3 activities A (déclaré SingleTask), B et C.

On implémente le onCreate() pour toutes, et éventuellement les onStart() / onStop() / onResume() / onPause(), cf le très bon tutorial à cette adresse : http://www.e-vidence.net/?p=298

Bon.

Je lance alors mon application qui start l'activity A. Cette dernière start la B et enfin B lance C.

J'ai alors une belle pile ABC avec A et B sur pause et C running.

A partir de la, 3 scénarios "perturbateurs" possible :

1°) L'utilisateur reçoit un coup de fil : C se met en pause, le coup de fil se passe et se termine, C se resume et appelle les events de restauration d'état qui vont bien => OK

2°) L'utilisateur appuie sur Home, fait sa vie, appuie sur Home longtemps et clic sur l'application, C se resume et appelle les events de restauration d'état qui vont bien => OK

3°) L'utilisateur appuie sur Home, fait sa vie, puis clic sur l'application depuis la liste des applications, A se lance => KO

Pourquoi dans le scénario 3, c'est "A" qui s'est relancé ? Ne devait-il pas dépiler la task, d'autant que "A" est déclaré SingleTask. Remarque, que A soit SingleTask ou non, c'est toujours le même problème. Dans le scénario 3, on retourne toujours sur A.

Comment faire pour que le scénario 3 soit équivalent au scénario 2 ?

S'il faut gérer dans A le startActivity() + Intent Extras pour restaurer les activities et leur état dans le cas du scénario 3... aheum.

Résolu : J'avais juste fait de la m**** :-X Et j'ai retiré SingleTask (pour le moment).

Modifié par NGTerenas
Posté(e)

Je venais de me lire justement ces 2 pavés... c'est pour ça que je suis venu poster ici :)

Par contre je viens de refaire des tests sans SingleTask et en fait, je crois (enfin je suis sûr) que j'avais fait de la m**** somewhere... puisqu'après plusieurs essais ça marche.

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...