Quelqu'un pourrait-il me dire la différence entre popBackStackImmediate
et popBackStack
? Je ne comprends vraiment pas et en outre, quel est le "drapeau" 0(zero) signifie au 2ème de popBackStack
?
Merci beaucoup pour votre aide les gars ...
popBackStackImmediate()
exécutera les commandes popping immédiatement dans l'appel. Les résultats peuvent être vérifiés immédiatement après l'appel. C'est un peu plus lent car toutes les actions de popping sont effectuées dans l'appel.
popBackStack()
exécutera les commandes de popping dans le prochain cycle de boucle d'événement (c'est-à-dire la prochaine phase de dessin). C'est donc asynchrone avec le reste du code. Cela signifie que le FragmentTransaction
pas sera supprimé du backstack une fois celui-ci exécuté. Dans la plupart des cas, vous n'avez pas besoin le FragmentTransaction
a immédiatement sauté, donc il attend que tout le reste soit terminé avant qu'il ne se produise réellement. Tout cela arrive si vite que l'utilisateur ne le reconnaîtrait pas.
Le drapeau à la fin n'est pas lié. Il ne peut actuellement être défini que sur POP_BACK_STACK_INCLUSIVE . Le FragmentManager
vous permet de définir un ID sur le backstack. Si vous définissez l'indicateur, il fera apparaître le FragmentTransaction
qui correspond à l'ID spécifié jusqu'à ce qu'il y en ait un qui ne correspond pas à l'ID ou que le bas soit atteint. Si l'indicateur n'est pas défini, tous les FragmentTransaction
qui ne correspondent pas à l'ID sont sautés jusqu'à ce qu'un soit atteint qui corresponde à l'ID ou que le bas soit atteint.
popBackStack()
fera éclater la pile arrière, mais il n'effectuera le pop que légèrement plus tard - il publie un message pour le faire, vous n'avez donc pas à attendre qu'une opération lourde se produise.
popBackStackImmediate()
le fait maintenant, avant le retour de la fonction. C'est plus lent et peut causer des problèmes de perf. Utilisez la version non immédiate lorsque cela est possible.
0 comme deuxième paramètre signifie utiliser le comportement par défaut (supprimer l'élément du haut dans le backstack). Vous pouvez également lui passer une série de drapeaux booléens OR. Le seul indicateur actuellement pris en charge est POP_BACK_STACK_INCLUSIVE , ce qui le modifie pour supprimer plusieurs fragments.