La clé de la maison de la presse de comportement
Tout en développant un exemple de l'application android, j'ai construit deux activités
1)Activité 1
2)Activité 2
Maintenant l'Activité 2 est au premier plan de l'activité alors que l'Activité 1 est l'arrière-plan. Maintenant, l'utilisateur appuie sur la clé de la Maison. L'application(c'est à dire à la fois les activités) pour disparaître. Maintenant, c'est que nous relancer l'application nous voir Activité 1 le premier plan de l'activité. Ma question est:
1)la plate-forme de maintenir toute l'histoire de l'entrée lorsqu'il est pressé à la maison de la clé?
2)Comment pouvons-nous prendre l'utilisateur pour le dernier lancement de l'activité sur la relance de la demande?
Une solution de Contournement pour ce qui peut être trouvé à l'adresse code.google.com/p/android/issues/detail?id=2373#c21
OriginalL'auteur Arnab | 2010-06-15
Vous devez vous connecter pour publier un commentaire.
J'ai eu du mal avec ce comportement étrange depuis plus d'un mois mais j'ai enfin trouvé l'explication par essai et erreur.
Ce problème se produit lorsque vous démarrez votre application à partir d'Eclipse, en ligne de commande ou si vous installez une application et appuyez sur le bouton Ouvrir(au lieu du bouton Terminé) pour démarrer l'application juste après que vous avez installés.
Si dans un de ces cas, vous commencez votre apllication, allez à la Activity1 puis de l'Activité 2, appuyez sur la touche HOME, puis appuyez sur l'icône de l'application, il va ouvrir une nouvelle instance de Activity1. Ne prenez pas mon mot pour lui. Appuyez simplement sur le DOS et de voir qu'il vous arrive à votre Activity2 que vous l'avez laissé quand vous avez appuyé sur la MAISON.
Il semble que le lanceur de l'activité n'est pas mis sur l'activité de la pile si l'application est démarrée dans l'une de ces façons mentionnées ci-dessus de sorte que c'est pourquoi il crée une nouvelle instance de l'écran de lancement de l'activité sur le dessus de la activités en cours dans l'application de la pile. Cela me semble un bug.
Donc, la solution serait de quitter l'application, la première fois qu'il a commencé à partir d'Eclipse ou de la ligne de commande ou le bouton Ouvrir, etc., en appuyant sur le bouton de RETOUR autant de fois que nécessaire, puis entrez de nouveau l'application. À partir de là, le comportement sera comme prévu.
EDIT:
Une meilleure solution serait celle-ci: Créer un DummyActivity et de le configurer comme le principal point d'entrée dans l'application. Aussi, ajouter le drapeau
android:noHistory="true"
. LeDummyActivity
est simple et ressemble à ceci:MyApplication
est une classe qui étend la classe android.app.Application et est définie à l'intérieur AndroidManifest.xml. DansHomeActivity.class
vous définissez à l'intérieur de laonCreate()
méthode du champ booléenstartedApp
de vrai. Si l'utilisateur appuie sur l'ARRIÈRE de l'écran, vous devez déplacer la valeur de startedApp à false.public class HomeActivity s'étend de l'Activité {
}
Donc, la première fois que l'application est lancée, elle entre dans le bloc si et lance la première activité réelle dans notre application. Si vous naviguer à travers l'application, puis appuyez sur la touche HOME, puis de lancer l'application à nouveau,
DummyActivity
sera appelée une deuxième fois, et il suffit d'appelerfinish()
sur lui-même et l'application va vous montrer la dernière activité avant que vous appuyiez sur la MAISON.Lire les commentaires d'autres personnes, il semble qu'il n'est pas certain que cette approche fonctionne sur toutes les versions. Pour le moment, je m'en tiens à cela, parce que je l'ai utilisé pendant presque 2 ans et c'est génial de travailler.
Me semble que votre solution a un trou. Le booléen
MyApplication.startedApp
est défini lors du démarrage de l'application et n'est jamais effacé. Cela signifie que si l'utilisateur lance l'application, puis clique sur le bouton de RETOUR, il n'y aura pas d'Activité dans l'activité de la pile, maisMyApplication.startedApp
seratrue
. Si l'utilisateur commence alors à nouveau l'application depuis l'écran d'accueil, cela permettra de lancer votre DummyActivity qui sera alors immédiatement appelfinish()
. Votre code suppose que le système d'exploitation va tuer le processus de votre application immédiatement une fois que l'utilisateur quitte l'application, je ne pense pas qu'est bonVous avez raison. J'ai ajouté la partie manquante qui, je l'utilise déjà dans mon propre code. Intercepter onBackPressed et déplacer startedApp à false.
Ayant abordé ce depuis des mois maintenant, je suis confiant en un avenir meilleur, cadre correct " solution qui ne nécessite pas le maintien de votre propre application/de la pile de l'état. C'est une légère amélioration de la #21 correctif mentionné ci-dessus et est disponible ici: code.google.com/p/android/issues/detail?id=2373#c40
OriginalL'auteur
Oui. Les activités lors du lancement/finis sont poussés/pop avais sur/à partir d'une Histoire de Pile.
AFAICT, qui devrait être le comportement par défaut. Lorsque vous relancez votre application, vous êtes pris à la dernière Activité sur la pile, sauf si vous changez la pile.
Lire ceci pour plus de détails: Application des Fondamentaux - les Activités et les Tâches
OriginalL'auteur
C'est un bug avec le système d'exploitation Android.
Veuillez effectuer les étapes suivantes.
1)Supprimer les de votre application et de la réinstaller.
2) Après l'installation de l'application, il affiche deux options "Fait" & "Ouvrir", cliquez sur le bouton Terminé.
3) Maintenant, ouvrez l'application à partir du menu de l'application. Votre problème sera résolu.
Quand jamais la MAISON du bouton est pressé, l'application va commencer à partir de l'état où il la gauche.
OriginalL'auteur
Je peux aussi recommander la lecture de L'activité et la Tâche des lignes Directrices de Conception. Ces sont l'interface utilisateur des lignes directrices sur la façon de se comporter lorsque le bouton Home enfoncé, quand l'Arrière est enfoncé, et ainsi de suite.
Ce n'est pas très technique, mais ça illustre très bien la façon dont votre application doit se comporter et ce que l'OS attend.
OriginalL'auteur
Vous ne pouvez pas gérer Bouton Home...
Développement Android page, dit bouton d'accueil les plus récents de la manipulation..
il est facile à comprendre..Merci
OriginalL'auteur
Le mode de lancement de votre activité peut affecter le comportement quand il est relaunchd après avoir appuyé sur la maison. Si la première activité a été lancé comme singletask ou à instance unique puis , c'est toujours la première activité qui sera repris.
Si les activités sont lancées à l'aide de défaut mode de lancement, puis au redémarrage de l'application, l'activité précédente sera repris
OriginalL'auteur
lorsque vous appuyez sur le bouton d'accueil de l'application disparaît , lors de la relance de l'application au premier plan de l'activité sera reprise ,
la raison en est sa le comportement du système d'exploitation android
OriginalL'auteur
J'ai eu un problème similaire. Ce n'était pas le lancement de la dernière activité ouverte, mais l'écran de lancement de l'Activité. Mais j'avais aussi mis
dans mon Lanceur d'Activité dans le manifeste. Retrait qui a résolu mon problème.
Si vous avez aussi de mettre la même chose, puis essayer de l'enlever, il pourrait résoudre pour vous aussi.
OriginalL'auteur