257 votes

Remplacer le bouton back pour agir comme le bouton "home"

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 est indiqué:

...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...

  1. La Capture de l'arrière appuyez sur le bouton (comme 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);
    }
    
  2. La Capture de l'arrière appuyez sur le bouton et ensuite usurper un bouton de la maison de la presse.

  3. La Capture de 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é.

Merci d'avance pour tous les pointeurs.

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.

343voto

Mirko N. Points 6258

La plupart du temps vous avez besoin pour créer un Service à accomplir quelque chose dans le fond, et votre visible Activity contrôle simplement ce Service. (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 votre Activity peut finish comme d'habitude et l' Service sera toujours en cours d'exécution.

Une approche plus simple est de capturer l' Back touche d'appel moveTaskToBack(vrai) comme suit:

// 2.0 and above
@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

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.

REMARQUE: 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 Retour.

49voto

Aniruddh Ambarkar Points 485

Utilisez le code suivant :

23voto

Dave Webb Points 90034

Si vous voulez prendre le Bouton de Retour ont un coup d'oeil à ce post sur l'Android Developer Blog. 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:

Un service ne dispose pas d'une interface visuelle pour l'utilisateur, mais plutôt s'exécute en arrière-plan pour une période de temps indéterminée. Par exemple, un service peut jouer de la musique de fond que l'utilisateur assiste à d'autres questions, ou il pourrait aller chercher des données sur le réseau ou de calculer quelque chose et d'assurer le résultat d'activités qui en ont besoin.

Ces semble approprié pour vos besoins.

18voto

jw23 Points 1359

tenter de substituer Sub `` définie dans la classe de android.app.Activity.

14voto

craigk Points 574

Si cela peut aider quelqu'un d’autre, j’ai eu une activité avec 2 mises en page que j’ai activée ou désactivée pour la visibilité, d’essayer d’imiter une sorte de page1 > page2 structure. s’ils étaient à la page 2 et vous appuyez sur le bouton de retour je voulais revenir à la page 1, si ils ont pressé le bouton de retour à la page 1, il devrait encore fonctionner normalement. Son joli basic mais ça marche

espérons que cela aide quelqu'un, acclamations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X