2017-06-14 7 views
0

Je suis extrêmement confus avec les modes de lancement d'activité. Voici le scénario.Plusieurs activités avec singleTask

Activité A - principal, lanceur avec singleTask mode de lancement Activité B - singleTask mode de lancement Activité C - mode de lancement norme

Maintenant, voici ce que je fais

Activité A> Activité B> Activité C

Et j'appuie sur le bouton d'accueil. Et je reprends l'application des applications récentes. Qu'est-ce qui se passe réellement est que

Activité A

Mais j'ai lu la documentation et il devrait être comme ça après la reprise

Activité A> Activité B

Ou suis-je manque quelque chose?

Répondre

0

Eh bien, tout dépend de la façon dont vous avez défini taskAffinity pour les différentes activités dans le manifeste.

Supposons que vous l'ayez configuré de telle sorte que l'activité A et l'activité B aient des valeurs différentes de taskAffinity (ce qui est la façon dont vous DEVRIEZ le configurer). Lorsque vous démarrez votre application, Android crée une nouvelle tâche contenant A. Lorsque vous lancez B à partir de A, Android doit créer une autre tâche contenant uniquement B. La tâche contenant A est envoyée en arrière-plan. Vous devriez maintenant avoir 2 tâches, l'une ne contient que A et l'autre contient seulement B. Lorsque vous lancez C à partir de B, la deuxième tâche doit maintenant contenir B->C. Lorsque vous appuyez sur le bouton HOME, la deuxième tâche est envoyée en arrière-plan. Maintenant, lorsque vous regardez dans la liste des tâches récentes, vous devriez voir 2 tâches pour votre application. En fonction de celui que vous choisissez, vous obtiendrez soit la tâche contenant seulement A, ou la tâche contenant B->C. C'est pourquoi vous ne devez PAS utiliser les modes de lancement spéciaux singleTask ou singleInstance, car ils font beaucoup de choses auxquelles vous ne vous attendez pas. Si vous ignorez ce conseil et utilisez de toute façon ces modes de lancement, vous devez savoir comment le taskAffinity affecte la manière dont les activités sont lancées dans les différentes tâches, et vous devez également savoir que vous pouvez vous retrouver avec plusieurs tâches, auquel cas vous devez pour fournir à l'utilisateur un moyen de revenir à la tâche correcte à partir de la liste des tâches récentes. Cela signifie également que vous devrez peut-être fournir des étiquettes différentes pour les tâches et/ou des icônes différentes pour les tâches, afin d'aider l'utilisateur à trouver la tâche correcte à reprendre.