3
votes

Quand dois-je utiliser addFlags ou setFlags pour supprimer des activités dans la pile?

J'ai une activité à bord et une activité de connexion. Dans LoginActivity après une connexion réussie, j'essaie d'effacer l'activité à bord en utilisant le code ci-dessous:

startActivity(new Intent(context, HomeActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK));

J'ai même essayé Intent.FLAG_ACTIVITY_NO_HISTORY mais cela ne fonctionne pas non plus. Alors que dois-je faire?


0 commentaires

4 Réponses :


0
votes

Essayez le code ci-dessous:

    Intent intent = new Intent(context, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);


0 commentaires

0
votes

Je dirais d'aller avec finishAffinity () avant de passer à l'activité à bord. Il n'est pas nécessaire de définir des indicateurs. Parce que cette méthode tue toutes les activités de la pile et l'activité en cours également


0 commentaires

0
votes

Il n'est pas nécessaire d'utiliser des FLAGS. Même si vous voulez comprendre, vérifiez ceci

Il existe deux façons de terminer l'activité en cours (LoginActivity dans votre cas) et de passer à l'activité suivante (à bord dans votre cas):

  1. Appelez finish () avant de démarrer la deuxième activité. Cela détruira l'activité actuelle.
  2. Appelez finishAffinity (); avant de démarrer la deuxième activité. Cela détruira la pile de toutes les activités précédentes.

J'espère que cela vous aidera.


0 commentaires

0
votes

Je suppose que l'application commence par OnboardActivity et qu'elle démarre LoginActivity et que vous souhaitez ensuite les effacer tous les deux et lancer HomeActivity ? < / p>

Si tel est le cas, je le ferais de cette façon:

  • OnboardActivity lance LoginActivity en utilisant startActivityForResult () .
  • LoginActivity renvoie un résultat qui indique si la connexion a réussi ou non et appelle finish () . LoginActivity n'est plus dans la tâche.
  • OnboardActivity vérifie le résultat dans OnActivityResult () et, si la connexion a réussi, lance HomeActivity (aucun indicateur nécessaire) et appelle < code> finish () sur lui-même.
  • À ce stade, LoginActivity et OnboardActivity ont disparu, et HomeActivity est la seule activité tâche.

0 commentaires