53 votes

Comment pouvons-nous utiliser onNewIntent() dans n'importe quelle activité?

Quel est le véritable usage de onNewIntent() dans le cycle de vie de l'activité et comment utilisons-nous cette méthode?

53voto

Padma Kumar Points 10698

Cela est appelé pour les activités qui définissent launchMode sur "singleTop" dans leur package, ou si un client a utilisé le drapeau FLAG_ACTIVITY_SINGLE_TOP lors de l'appel à startActivity(Intent).

Si vous le définissez sur single top, l'activité ne sera pas lancée si elle est déjà en cours d'exécution en haut de la pile d'historique. Elle ne se relancera pas mais s'affichera simplement depuis la pile.

0 votes

Apparemment, cela sera également appelé si FLAG_ACTIVITY_REORDER_TO_FRONT est utilisé (c'est le cas dans mon code). Ne sais pas pourquoi les documents officiels ne le mentionnent pas.

1 votes

Ce n'est pas seulement pour le mode de lancement singleTop, mais plutôt à chaque fois qu'une instance d'Activity excitante est lancée à partir d'un nouvel Intent. Par exemple, cela peut également être appelé lors de l'utilisation de FLAG_ACTIVITY_CLEAR_TOP ou des modes de lancement 'singleTask' ou 'singleInstance'.

1 votes

@RobCo a raison. La seule chose à noter est qu'il voulait dire "existante", et non "excitante".

34voto

user915267 Points 505

Vérifiez ce lien sur onNewIntent()

Dans manifest.xml, dans une balise d'activité, définissez launchmode="singleTask"

4 votes

Très bon lien. Il explique comment onCreate et onNewIntent fonctionnent ensemble

0 votes

Cette lien explique tout. C'est bien meilleur que la propre documentation d'Android.

16voto

Jaydev Points 972

Les réponses ci-dessus sont incomplètes.

Dans le cas où l'activité 'a1' de l'application 'A1' a le mode de lancement "singleTask" ou "singleTop" et est déjà en cours (dans la tâche t1) mais en pause, et maintenant une autre tâche (disons la tâche t2) (généralement une autre application Android) envoie un intent à l'activité a1 de l'application A1, au lieu de créer une autre instance de l'activité dans la tâche t2, Android reprend a1 de la tâche t1, en émettant un appel à la méthode onNewIntent(intent) dans a1.

Tâches et pile de retour est un concept important, aucun blog n'explique mieux que la documentation Android elle-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X