Comment l'Activité de contrôle de flux - bouton précédent rapport bouton Home
J'ai 3 activités dans mon application:
Activity1 -> Activity2 -> Activity3
À l'intérieur de Activity3, si l'utilisateur appuie sur le Dos, je voudrais revenir à Activity2. Dans Activity3 de onPause cas, j'ai ajouté un finish()
déclaration. C'est probablement même pas nécessaire, mais je voulais m'assurer que cette Activité est nettoyé. Cela fonctionne très bien.
Cependant, alors que dans Activity3, si l'utilisateur appuie sur la Maison ou du démarrage d'une nouvelle application (par la barre de notification ou autre), je veux à la fois Activity3 et Activity2 à la fin. Si l'utilisateur retourne à cette application, il devrait reprendre avec Activity1.
J'ai trouvé comment faire l'un ou l'autre, mais je ne peux pas comprendre comment gérer les deux cas, si c'est encore possible. Puis-je piège le bouton "Retour" dans Activity3 et envoyer un message à Activity2 lui disant de ne pas finish()
? Il semble que les Activités de suivre le même cycle de vie de flux (Pause, Arrêt), indépendamment de ce que vous faites pour les envoyer à l'arrière-plan.
Juste pour répondre à la question de savoir pourquoi je veux ce problème, imaginez que Activity1
est un écran de connexion, Activity2
est un écran de sélection, et Activity3
est un écran contenu. Si j'appuie sur le Dos de la page de contenu, je veux être en mesure de procéder à une nouvelle sélection. Si je quitter par tout autre moyen (à la Maison, barre de notification), je veux que l'utilisateur soit "logged out"
.
Merci d'avance pour votre aide.
OriginalL'auteur RMS2 | 2010-09-02
Vous devez vous connecter pour publier un commentaire.
Encore une fois, j'ai répondu à ma propre question. Je vais poster ma solution ici au cas où il permet à quelqu'un d'autre.
Dans le onPause événements des deux Activity2 et Activity3, j'ai ajouté finish(). Cela prend en charge les cas où l'utilisateur appuie sur la Maison ou répond à une Barre de Notification des événements alors que, dans ces activités. Étant donné que ces activités sont à la fois terminé, si l'utilisateur retourne sur l'application, ils vont se Activity1 (maintenant au sommet de la pile.)
Dans Activity3, j'ai ajouté un onKeyDown piège pour la touche "Retour". Depuis Activity2 a été tué quand il est allé onPause, nous avons pour déclencher une nouvelle Activity2 de Activity3. Après le démarrage de Activity2, Activity3, puis se termine. Voici le code pour Activity3 de onKeyDown:
OriginalL'auteur RMS2
Vous pouvez aussi donner Activity1 la
android:clearTaskOnLaunch
attribut dans votre AndroidManifest.xml.OriginalL'auteur Ross Light
Sur les activités principales ajouter:
Sur les autres à ajouter:
De cette manière, il tuera toute activité lors d'un retour à l'application après avoir été en arrière-plan.
OriginalL'auteur neteinstein
@RMS2 la réponse qui vous a suggéré.. qui fournissent la fonctionnalité? J'ai également fait face à des problèmes similaires de sorte qu'au lieu de l'annulation de la onpause et sur le curriculum vitae, j'ai remplacé onUserLeaveHint() la méthode. De cette façon, mon application sait quand l'utilisateur appuie sur le bouton home enfoncé et terminer l'activité.
OriginalL'auteur mm3016