2011-03-20 3 views
4

Je sais qu'il y a eu quelques messages pour ce que je suis sur le point de demander, mais je ne peux pas trouver avec la bonne réponse. Si je comprends bien, si votre activité principale (appelons-la A) launchMode est définie sur singleTask, et A a initié l'activité B, un clic sur le bouton Home détruira la pile d'historique et relancera l'application. J'ai repoussé à A et pas B.android - launchMode = notification simple et notifications?

J'ai launchMode défini sur singleTask parce que j'ai une notification persistante et je ne veux pas que plusieurs instances de l'activité principale apparaissent lorsque l'utilisateur clique sur la notification.

Y at-il quelque chose qui me manque qui me permettrait de répondre aux deux?

Je demande donc s'il y a un moyen de m'assurer que chaque fois que l'utilisateur souhaite lancer l'application, à partir de la notification ou non, pour le ramener à la dernière activité (actuelle).

Si je change launchMode en singleTop cela fonctionne mais je reçois plusieurs instances de l'activité principale chaque fois que je le lance.

Merci

Andreas

Répondre

1

Avez-vous essayé de mettre launchMode singleTop à toutes les activités dans votre application ?? Parce que ce que j'obtiens de votre requête est que l'activité principale n'est pas singleTop, ce qui peut mener à l'appel d'une autre instance de l'activité principale une fois que l'activité principale est lancée à partir de l'activité de notification.

Vous pouvez également spécifier le mode de lancement en tant qu'attribut de la balise d'application elle-même dans le manifeste.

2

J'utilise le code suivant pour éviter plusieurs instances de l'activité

Intent intent=new Intent(this,RICO.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

changement manifeste ne semble pas approprié de me

0

Je rencontre des problèmes avec les deux approaches. La notification ne fonctionne parfaitement que dans cette condition: - en utilisant le bouton Précédent de l'activité principale (avec l'historique contenant uniquement cette activité) - n'utilisant pas le bouton Accueil - n'utilisant pas la notification SI l'activité que vous appelez est sur le dessus et actif

Dans tous les autres cas, la notification ne peut appeler plus au premier plan l'activité en utilisant « nouvelle intention (...) »

0

J'ai trouvé la combinaison alchimique d'options et manifeste son intention drapeaux pour obtenir ce dont j'avais besoin:

Intent intent= new Intent(this, YaampActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

en utilisant ces options

android:launchMode="singleTask" 
android:taskAffinity="" 
android:excludeFromRecents="true" 

dans l'élément.

Maintenant j'ai une notification qui engendre l'activité principale (si cette activité n'est pas déjà au premier plan) et son comportement est correct même si l'activité est "fermée" en appuyant sur le bouton home et/ou l'arrière .