android appuyant sur le bouton arrière doit quitter l'application
Lorsqu'un utilisateur appuie sur le bouton retour sur l'intention, l'application doit fermer. Comment puis-je m'assurer que l'application quitte lorsque le bouton de retour est appuyé?
10 réponses
immédiatement après avoir commencé une nouvelle activité, en utilisant startActivity
, assurez-vous d'appeler finish()
pour que l'activité actuelle ne soit pas empilée derrière la nouvelle.
EDIT En ce qui concerne votre commentaire:
ce que vous suggérez n'est pas particulièrement comment l'application android flow fonctionne habituellement, et comment les utilisateurs s'attendent à ce qu'il fonctionne. Ce que vous peut si vous voulez vraiment, est de s'assurer que chaque startActivity
menant à cette activité, est un startActivityForResult
et a un écouteur onActivityResult
qui vérifie pour un code de sortie, et bulles que retour. Vous pouvez en savoir plus ici . Fondamentalement, utilisez setResult
avant de terminer une activité, pour définir un code de sortie de votre choix, et si votre activité mère reçoit ce code de sortie, vous le définissez dans que activité, et finir celui-ci, etc...
dans mon activité à la maison, je remplace le" onBackPressed "par:
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
donc si l'utilisateur est dans l'activité à la maison et appuyez sur retour, il va à l'écran d'accueil.
j'ai pris le code de aller à l'écran D'accueil Programmatically
une meilleure expérience utilisateur:
/**
* Back button listener.
* Will close the application if the back button pressed twice.
*/
@Override
public void onBackPressed()
{
if(backButtonCount >= 1)
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
else
{
Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
backButtonCount++;
}
}
pourquoi l'utilisateur n'a-t-il pas simplement appuyé sur le bouton Accueil? Ensuite, ils peuvent quitter votre application à partir de vos activités, et pas seulement un seul.
si vous craignez que votre application continue à faire quelque chose en arrière-plan. Assurez-vous de l'arrêter dans les commandes onPause et onStop pertinentes (qui seront déclenchées lorsque l'utilisateur appuie sur Home).
Si votre problème est que vous voulez la prochaine fois que l'utilisateur clique sur votre application pour qu'il puisse commencer retour au début, je recommande de mettre une sorte d'élément de menu ou un bouton UI sur l'écran qui ramène l'utilisateur à l'activité de départ de votre application. Comme l'oiseau twitter dans l'application twitter officielle, etc.
Utiliser onBackPressed
méthode
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}
cela résoudra votre problème.
l'application ne sortira que s'il n'y a aucune activité dans la pile arrière. Ajoutez cette ligne dans votre manifeste android:noHistory="true" à toutes les activités que vous ne voulez pas être de retour empilés.Et puis pour fermer l'application appeler le finition () dans le OnBackPressed
<activity android:name=".activities.DemoActivity"
android:screenOrientation="portrait"
**android:noHistory="true"**
/>
tout d'abord, Android ne vous recommande pas de faire cela dans le bouton précédent, mais plutôt en utilisant les méthodes cycle de vie fourni. Le bouton arrière ne doit pas détruire l'activité.
Les activitéssont ajoutées à la pile, accessibles à partir de la vue D'ensemble (bouton carré depuis qu'ils ont introduit la conception du matériau dans 5.0) lorsque le bouton de retour est appuyé sur la dernière activité restante de la pile UI. Si l'utilisateur souhaite fermer votre application, ils doivent glisser off (le fermer) dans le menu Vue d'ensemble.
votre application est responsable d'arrêter toutes les tâches et tâches de fond que vous ne voulez pas exécuter, sur les méthodes de cycle de vie onPause(), onStop() et onDestroy (). S'il vous plaît lire plus sur les cycles de vie et leur mise en œuvre correcte ici: http://developer.android.com/training/basics/activity-lifecycle/stopping.html
mais pour répondre à votre question, vous pouvez faire hacks à mettre en œuvre le comportement exact que vous voulez, mais comme je l'ai dit, il n'est pas recommandé :
@Override
public void onBackPressed() {
// make sure you have this outcommented
// super.onBackPressed();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
pour sortir d'une application Android, il suffit d'utiliser. dans votre activité principale, ou vous pouvez utiliser le fichier manifeste Android pour définir
android:noHistory="true"
terminez votre activité_actuelle en utilisant la méthode finish() onBack method of your current_activity
et ajouter ensuite les lignes suivantes dans onDestroy de l'activité actuelle pour supprimer la force fermer
@Override
public void onDestroy()
{
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy();
}
j'ai modifié la réponse de @Vlad_Spays pour que le bouton arrière fonctionne normalement à moins que ce soit le dernier élément de la pile, puis il invite l'utilisateur avant de quitter l'application.
@Override
public void onBackPressed(){
if (isTaskRoot()){
if (backButtonCount >= 1){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}else{
Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
backButtonCount++;
}
}else{
super.onBackPressed();
}
}