Question

Je sais qu'il ya eu quelques postes pour ce que je suis sur le point de demander, mais je ne peux pas trouver la bonne réponse.

De ma compréhension, si (il un appel laissez les années) de votre activité principale launchMode est réglé sur singleTask, et A a lancé l'activité B puis un clic sur le bouton d'accueil détruira la pile de l'histoire et de relancer l'application vous prendre Retour à A et non B.

je launchMode ensemble à singleTask parce que j'ai une notification persistante et je ne veux pas avoir plusieurs instances de l'activité principale apparaître chaque fois que l'utilisateur clique sur la notification.

Y at-il quelque chose que je manque qui me permettrait de répondre à la fois?

Je demande donc s'il y a une manière que je peux faire en sorte que chaque fois que l'utilisateur souhaite lancer l'application, de la notification ou non, de le ramener à la dernière activité (en cours).

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

Merci

Andreas

Était-ce utile?

La solution

Avez-vous essayé d'installer launchMode à singleTop à toutes les activités dans votre application ?? Parce que ce que je reçois de votre requête est que l'activité principale n'est pas singleTop, donc cela pourrait conduire à une autre instance de l'activité principale étant appelée une fois que l'activité principale est lancée à partir de l'activité qui a été lancé à partir de l'activité de notification.

Vous pouvez également spécifier l'launchMode comme un attribut à la balise application elle-même dans le manifeste.

Autres conseils

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);

La modification manifeste n'a pas l'air me convient

Je vais avoir des problèmes avec les deux approaches. La notification fonctionne sans faille que dans cette condition: - en utilisant le bouton de retour à l'activité principale (l'histoire ne contenant que la cette activité) - ne pas utiliser le bouton Accueil - ne pas utiliser la notification si l'activité que vous appelez est sur le dessus et active

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

J'ai trouvé la combinaison alchimique d'options manifestes et drapeaux pour intention pour obtenir ce que je 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"

à l'intérieur de l'élément.

Maintenant, j'ai une notification qui fraye l'activité principale (si cette activité 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 d'accueil et / ou une arrière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top