Sous Android, si vous souhaitez effacer votre pile Activity
actuelle et lancer une nouvelle Activity
(par exemple, vous déconnecter de l'application et lancer une connexion Activity
), semble être deux approches.
Y a-t-il des avantages l'un par rapport à l'autre si votre niveau d'API cible est supérieur à 16?
1) Terminer l'affinité
Appel de finishAffinity()
à partir d'une activité. Activity.finishAffinity
2) Indicateurs d'intention
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
L'approche finishAffinity()
convient pour> = API 16.
L'approche Intent
flags convient à> = API 11.
Pour être clair, dans le but d'effacer la pile Activity
actuelle, les deux approches semblent également fonctionner également. Ma question est la suivante: y a-t-il des problèmes que les gens ont connus et, par conséquent, y a-t-il une raison de choisir l'un plutôt que l'autre?
Fonctionnellement, il n'y a pas de différence, mais en testant cela sur GenyMotion, il semble y avoir une légère différence visuelle. Voir la diffusion Web: https://drive.google.com/file/d/0B8Y77sY7Y2CGRS02c3UyNjd2MGs/view?usp=sharing
Vous devrez essayer cela sur une gamme d'appareils pour voir à quel point c'est cohérent.
Subjectivement, je dirais aller avec la finishAffinity()
parce qu'elle est plus explicite. Cependant, si vous devez prendre en charge <SDK 16, vous n'avez pas vraiment le choix.
Si API> = 21, vous pouvez utiliser la commande de:
finishAndRemoveTask ();
Termine toutes les activités de cette tâche et la supprime de la liste des tâches récentes.
https://developer.Android.com/reference/Android/app/ActivityManager.AppTask.html
Essaye ça
Intent.FLAG_ACTIVITY_CLEAR_TOP
il efface la pile des activités précédentes