3
votes

Comment puis-je terminer le "groupe" d'activités?

J'ai une opération dans mon application Android qui comprend quelques activités. A la fin de cette opération, je dois fermer toutes ces activités et revenir à l'écran qui démarre cette opération. Vous trouverez ci-dessous un diagramme expliquant comment cela devrait fonctionner. Existe-t-il des options pour le faire?

Diagramme

P / S / Fragments n'est pas une option dans mon cas


1 commentaires

Vous pouvez utiliser une chaîne de startActivityForResult s. Ou utilisez des fragments. Ou du moins tout ce qui n'est pas une chaîne d'activités.


3 Réponses :


2
votes

Il existe de nombreuses façons de procéder. Bientôt, ils sont:
1. Démarrez toute votre activité avec la méthode startActivityOnResult () . Et attrape si tu as besoin de les fermer
2. démarrer Activity_1 avec le nettoyage de la backstack actuelle:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); 


3. Activités situées à l'intérieur des processus. Vous pouvez définir un autre processus dans le AndroidManifest pour vos activités (3,4,5). Après cela, vous devez revenir au processus précédent et supprimer le processus actuel de backStack.


2 commentaires

La première option semble intéressante, elle peut vraiment aider. La deuxième est impossible maintenant parce que je ne sais pas quelle activité commence l'opération.


Quelque chose de similaire à la troisième option, je suis déjà essayé. J'ai exécuté ma première activité d'opération avec les indicateurs FLAG_ACTIVITY_NEW_TASK, mais parfois (si une application avec une activité en cours dans la nouvelle tâche était en arrière-plan) ma tâche précédente était déjà fermée à ce moment-là lorsque je fermais la tâche des opérations. Ainsi, l'application s'arrête simplement lorsque l'utilisateur a appuyé sur OK sur la dernière activité de l'opération.



1
votes

vous pouvez utiliser flag = Intent.FLAG_ACTIVITY_CLEAR_TASK pour terminer le groupe d'activités.
voici un exemple de code

 startActivity(new Intent(SignIn.this, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK));


1 commentaires

oui, mais je ne sais pas à quelle activité je dois retourner car je ne sais pas quelle activité a commencé mon opération



1
votes

vous pouvez utiliser flag = Intent.FLAG_ACTIVITY_CLEAR_TASK pour effacer toutes les activités précédentes. Cet indicateur est utilisé pour effacer toutes les activités précédentes.

essayez ce code

 //  go to login activity

Intent intent =newIntent(AddNewCardActivity.this,HomeNavigationActivity.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();


0 commentaires