2010-08-13 6 views
1

Cela a probablement déjà été demandé, mais je ne peux pas trouver un bon moyen de l'implémenter. J'essaye d'écrire un programme qui gère une forme de messages, et ces messages sont reçus d'une source de données externe. Tout cela fonctionne. Cependant, le problème survient lorsque j'essaie d'avertir l'utilisateur: je voudrais que la notification saute directement au message quand il est touché, mais cela semble gâcher la pile arrière. Ceci est probablement mieux expliqué par l'exemple:Comment implémenter une notification de détails Android?

  1. J'ouvre la liste des messages, l'activité principale, et navigue pendant un moment.
  2. Je frappe à la maison et aller dans une autre application (disons Musique).
  3. Un nouveau message est reçu. Une notification arrive, que je touche. La vue détaillée des messages est affichée.
  4. Maintenant, je clique sur Retour. Ce que je veux avoir, c'est que je retourne à la musique, mais malheureusement, Back m'envoie à la liste des messages, et puis en appuyant sur Retour me rendra à la musique.

La fois la liste et les activités de détail sont marqués comme "singleTop", et les drapeaux exacts que j'utiliser pour l'intention de notification sont:

  • FLAG_ACTIVITY_NEW_TASK
  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_SINGLE_TOP

Je me demande si l'application de messagerie peut le faire, pourquoi pas moi?

Répondre

0

J'ai trouvé une façon de le faire, mais il est toujours pas idéal:

  • Modifier l'activité de détail pour avoir une affinité de tâche différente de tout le reste.
  • Ajoutez android:launchMode="singleTop" et android:excludeFromRecents="true" à l'entrée de manifeste de l'activité de détail.
  • (Facultatif) Modifiez l'activité de la liste pour ouvrir l'activité de détail avec FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET. (Cela rend la tâche plus proche de l'application de messagerie intégrée.)

La seule faute à ce système est que le retour à l'application reviendra toujours à l'activité de la liste, mais au moins il est cohérent . Si quelqu'un d'autre a une meilleure façon de le faire, j'aimerais l'entendre.

Questions connexes