2013-04-09 5 views
0

Je construis une application mono android qui reçoit des notifications de GCM et ouvre une activité lorsque l'utilisateur clique sur la notification.Ouvrir une activité existante - mono pour android

Un problème se produit lorsqu'une instance de l'activité créée par la notification existe déjà et qu'elle correspond à l'activité active en cours dans l'application. En cliquant sur la notification, une activité en double est créée dans l'application. Le problème est subtil car la nouvelle activité dupliquée s'ouvre au premier plan et semble identique à l'activité précédente. Cependant, lorsque l'utilisateur clique sur le bouton précédent, l'activité dupliquée est supprimée mais l'activité précédente reste signifiée que l'utilisateur doit cliquer deux fois sur le bouton précédent.

Le code suivant est utilisé pour générer une notification et créer une activité sur un clic. J'espère que le processus serait quelque chose comme, si l'activité existe, ouvrez l'activité existante sinon démarrez une nouvelle activité. Appréciez toute aide merci.

void createNotification(string title, string desc) 
{ 
//Create notification 
var notificationManager = GetSystemService(Context.NotificationService) as NotificationManager; 

//Create an intent to show ui 
var uiIntent = new Intent(this, typeof(Messaging)); 

//Create the notification 
var notification = new Notification(Android.Resource.Drawable.SymActionEmail, title); 

notification.Defaults = NotificationDefaults.Sound; 

//Auto cancel will remove the notification once the user touches it 
notification.Flags = NotificationFlags.AutoCancel; 

//Set the notification info 
//we use the pending intent, passing our ui intent over which will get called 
//when the notification is tapped. 
notification.SetLatestEventInfo(this, title, desc, PendingIntent.GetActivity(this, 0, uiIntent, 0)); 

//Show the notification 
notificationManager.Notify(1, notification); 
} 

Répondre

0

Essayez cette

Intent intent = new Intent(context, MyActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
startActivity(intent); 
Questions connexes