J'espère que quelqu'un pourra m'aider à trouver, sinon une solution, au moins une explication d'un comportement.
Le problème:
Sur certains appareils, le fait d'appuyer sur l'icône du lanceur entraîne la reprise de la tâche en cours, sur d'autres, le déclenchement de l'intention de lancement initial (redémarrage effectif de l'application). Pourquoi cela arrive-t-il?
Le détail:
Lorsque vous appuyez sur l '"icône du lanceur", l'application démarre normalement - c'est-à-dire, je suppose, qu'une intention est lancée avec le nom de votre premier Activity
avec l'action android.intent.action.MAIN
et la catégorie android.intent.category.LAUNCHER
. Mais cela ne peut pas toujours être le cas:
Sur la majorité des appareils, si vous appuyez sur l'icône du lanceur après que l'application est déjà en cours d'exécution, l'activité en cours d'exécution dans ce processus est reprise ( PAS l'initiale Activity
). Il reprend de la même manière que si vous l'aviez sélectionné dans les "Tâches récentes" du menu OS. C'est le comportement que je souhaite sur tous les appareils.
Cependant, sur certains autres appareils sélectionnés, un comportement différent se produit:
Sur le Motorola Xoom, lorsque vous appuyez sur l'icône du lanceur, l'application démarre toujours le lancement initial,
Activity
indépendamment de ce qui est en cours d'exécution. Je suppose que les icônes du lanceur démarrent toujours l'intention "LAUNCHER".Sur le Samsung Tab 2, lorsque vous appuyez sur l'icône du lanceur, si vous venez d'installer l'application, elle lancera toujours la version initiale
Activity
(identique à Xoom) - cependant, après avoir redémarré l'appareil après l'installation, l'icône du lanceur sera à la place reprendre l'application. Je suppose que ces appareils ajoutent des "applications installées" dans une table de recherche au démarrage de l'appareil qui permettent aux icônes du lanceur de reprendre correctement les tâches en cours d'exécution?
J'ai lu de nombreuses réponses qui semblent similaires à mon problème, mais simplement ajouter android:alwaysRetainTaskState="true"
ou utiliser launchMode="singleTop"
le Activity
ne sont pas la réponse.
Éditer:
Après le lancement le plus récent de cette application, nous constatons que ce problème a commencé à se produire sur tous les appareils après le premier redémarrage. Ce qui me semble fou, mais en regardant à travers le processus de redémarrage, je ne peux pas vraiment trouver ce qui ne va pas.
finish()
dans les cas où il recommence le premier Activity
au lieu de les reprendre.