Remplacer bouton de retour à la loi comme à la maison bouton
En appuyant sur le bouton de retour, j'aimerais que ma demande d'aller dans l'état: arrêté, plutôt que la destruction de l'état.
Dans l'Android docs il déclare:
...toutes les activités n'ont le comportement qu'ils sont détruits lorsque le DOS est appuyé. Lorsque l'utilisateur commence à jouer de la musique dans l'application Musique et appuie sur le DOS, l'application remplace le retour normal de comportement, la prévention de l'activité de joueur de la destruction, et continue à jouer de la musique, même si son activité n'est plus visible
Comment faire pour répliquer cette fonctionnalité dans mon propre application?
Je pense qu'il doit y avoir trois possibilités...
-
Capturer le bouton retour de presse (ci-dessous) et ensuite appeler n'importe quelle méthode(s) sur le bouton home appels.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { Log.d(this.getClass().getName(), "back button pressed"); } return super.onKeyDown(keyCode, event); }
-
Capturer l'arrière appuyez sur le bouton et ensuite usurper un bouton de la maison de la presse.
-
Capturer l'arrière appuyez sur le bouton, puis le démarrage de l'Activité de l'écran d'accueil, mettre mon l'Activité de l'application dans l'état: arrêté.
Edit:
Je sais que sur les services et les am à l'aide de l'un à l'application à laquelle ce problème est lié. Cette question est précisément de mettre l'Activité dans l'état: arrêté plutôt que la destruction de l'état en appuyant sur le bouton de retour.
- voir une semblable réponse stackoverflow.com/questions/5914040/...
Vous devez vous connecter pour publier un commentaire.
La plupart du temps, vous devez créer un Service pour effectuer quelque chose dans le fond, et votre visible
Activity
contrôle simplement ceService
. (Je suis sûr que le lecteur de Musique fonctionne de la même manière, afin que l'exemple de la doc semble un peu trompeur.) Si c'est le cas, alors votreActivity
peutfinish
comme d'habitude et leService
sera toujours en cours d'exécution.Une approche plus simple est de capturer les
Back
touche d'appel moveTaskToBack(vrai) comme suit:Je pense que l'option retenue devrait être, pour que l'Activité se terminera normalement et être en mesure de recréer lui-même par exemple, la lecture de l'état actuel à partir d'un Service en cas de besoin. Mais
moveTaskToBack
peut être utilisé comme une alternative rapide à l'occasion.NOTE: comme l'a souligné Dave ci-dessous Android 2.0 a introduit un nouveau
onBackPressed
méthode, et ces recommandations sur la façon de gérer le bouton.Utiliser le code suivant:
Si vous voulez attraper l'Arrière Bouton de regarder ce post sur le Blog des Développeurs Android. Il couvre la façon la plus facile de le faire dans Android 2.0 et la meilleure façon de le faire pour une application qui s'exécute sur 1.x et 2.0.
Toutefois, si votre Activité est Arrêté, il peut être tué, selon la disponibilité de la mémoire sur l'appareil. Si vous voulez un processus à exécuter, sans INTERFACE utilisateur, vous devez créer un
Service
. La documentation dit ce qui suit à propos des Services:Ces semble approprié pour vos besoins.
essayer de override void
onBackPressed()
défini dans android.app.L'activité de la classe.si ça aide quelqu'un d'autre, j'ai eu une activité avec 2 mises en page que j'ai activé et désactivé pour la visibilité, en essayant d'imiter une sorte de page1 > page2 structure. si ils étaient sur la page 2, et appuyé sur le bouton de retour, je les voulais pour revenir à la page 1, si ils ont appuyé sur le bouton retour à la page 1, il doit encore travailler comme d'habitude. Son assez basique mais ça fonctionne
espère que cela aide quelqu'un,
cheers
Exemple de travail..
Assurez-vous de ne pas l'appeler super.onBackPressed();
De cette façon, votre Bouton Retour de loi comme le bouton Home . Il n'a pas les finitions de votre activité, mais à l'arrière-plan
Deuxième façon est d'appeler
moveTaskToBack(true);
dansonBackPressed
et assurez-vous de retirersuper.onBackPressed
Mieux encore, comment sur OnPause():
Appelés dans le cadre de l'activité du cycle de vie lorsqu'une activité est en cours dans le fond, mais n'a pas (encore) été tué. La contrepartie de onResume().
Lorsque l'activité B est lancé à la face de l'activité, ce callback sera appelé sur A. B ne sera pas créé jusqu'à ce qu'Un de onPause() renvoie, alors assurez-vous de
enter code here
ne rien faire de longues ici.Ce rappel est principalement utilisé pour l'enregistrement de tout état persistant de l'activité d'édition et de s'assurer que rien n'est perdu si il n'y a pas assez de ressources pour démarrer une nouvelle activité sans d'abord de tuer celui-ci.
C'est aussi un bon endroit pour faire des choses comme l'arrêt des animations et d'autres choses qui consomment une quantité notable de CPU afin de les faire passer à la prochaine activité le plus rapidement possible, ou pour fermer des ressources que sont l'accès exclusif de la caméra.
Remplacer onBackPressed() après android 2.0.
Comme
J'ai utiliser @Mirko N. answser en utilisant la nouvelle Coutume EditText
Puis définissez les données de votre activité
Merci.