2014-06-28 2 views
1

Je veux savoir si l'utilisateur a ouvert l'application, car lorsque je reçois une diffusion de GCM, je crée une notification avec l'intention de l'application. Lorsque l'utilisateur clique sur la notification, il va commencer une nouvelle intention pour l'activité principale, en mettant l'ancienne activité principale sur la pile arrière, puis, lorsque l'utilisateur demande une navigation arrière, il fermera l'activité voulue et ouvrira (encore pour lui) la dernière activité sur la pile.Vérifiez si l'activité est active sur Gcm Intent Service

Résumer:

activité actuelle sur l'écran: XActivity

Nouvelle notification avec l'intention de XActivity.

utilisateur clique sur la notification, de sorte que la pile est XActivity, XActivity.

Comment puis-je détecter si XActivity est déjà affiché et lui envoyer un contenu supplémentaire?

Merci!

+0

manifeste android définir les modes de lancement .. en mode instance unique pour le dédouanement dans les documents de lecture Android sur les modes de lancement http://developer.android.com/guide/topics /manifest/activity-element.html – Sush

Répondre

3

Définissez le mode de lancement de votre activité sur singleTop, puis démarrez-le avec une intention portant le code FLAG_ACTIVITY_NEW_TASK. Cela démarrera l'activité si elle n'est pas en cours d'exécution, sinon l'instance en cours d'exécution sera utilisée.

+0

L'instance en cours d'exécution recevra les données supplémentaires de l'intention? –

+0

Oui, vous pouvez remplacer la méthode 'OnNewIntent()' de l'activité pour recevoir les données de l'intention. – Price

+0

Mais comment le cycle serait? d'abord onCreate puis onNewIntent? (si l'activité était morte lors de l'appel d'intention) –

1

Vous pouvez déclarer une variable booléenne: boolean isOnPause;

puis de surcharger la méthode onResume() et de faire isOnPause = false; substituez la méthode onPause() et rendez isOnPause = true;

et vérifier cette variable avant de commencer une nouvelle intention

+0

Que faire si votre application n'est pas en cours d'exécution lorsque le message GCM arrive? – Price

+0

La question a commencé comme ceci: "Je veux savoir si l'utilisateur a ouvert l'application" et, je pense que ma réponse fournit une solution pour cela. Si l'application est ouverte, l'activité est définitivement onResume(), et si elle n'est pas opend, alors onPause(); –

Questions connexes