2010-08-06 9 views
6

Je crée une application de surveillance à arrêts multiples pour laquelle plusieurs temporisateurs sont exécutés en parallèle et chaque notification est liée à chaque temporisateur.Android: Gestion de plusieurs notifications dans la barre d'état

Je suis capable de créer plusieurs minuteurs avec le code suivant.

private void updateNotification(int notificationId, int clockStatusID, CharSequence text) { 
    // notificationManager.cancel(notificationId); 
    // throws up an ongoing notification that the timer is running 
    Log.i("TIMERCOUNT", "Notification id: " + notificationId); 
    Notification not = new Notification(clockStatusID, // the 
     // icon 
     // for 
     // the 
     // status 
     // bar 
     text, // the text to display in the ticker 
     System.currentTimeMillis() // the timestamp for the 
     // notification to appear 
    ); 
    Intent intent = new Intent(); 
    intent.setClassName("com.intuit.time_catcher.android.activities", 
    "com.intuit.time_catcher.android.activities.Tabs"); 
    not.setLatestEventInfo(self, 
     getText(R.string.timer_notification_title), 
     getText(R.string.timer_on_notification_text), PendingIntent 
     .getActivity(this, 0, intent, 
      PendingIntent.FLAG_UPDATE_CURRENT)); 
    not.flags += Notification.FLAG_ONGOING_EVENT; 
    not.flags += Notification.FLAG_NO_CLEAR; 
    notificationManager.notify(notificationId, not); 

} 

Ce qui suit est le problème auquel je suis confronté. Considérer qu'il y a 3 temporisations en cours et 3 notifications dans la barre d'état. Quand je mets à jour le timer 2, la notification 3 (qui est à l'extrême droite) est mise à jour, mais ce que je veux vraiment faire est de mettre à jour la deuxième notification (celle du milieu). Lorsque j'imprime les identifiants de notification, je vois les bonnes valeurs. Je ne comprends pas pourquoi je reçois ce comportement bizarre?

Répondre

4

Il semble que vos intentions sont mises en cache (ce qui est la valeur par défaut d'usine)

d'essayer d'ajouter uniques setAction('anystring'+timestamp) ou une valeur de comptage, il doit être unique comme expliqué dans ce question

intent.setAction("actionstring" + System.currentTimeMillis()); 
+0

Je l'ai essayé, mais je suis toujours confronté au même problème –

+0

Au lieu d'intention.setAction() j'ai utilisé intention.setData() et cela a fonctionné –

1

Une application ne peut pas vraiment contrôler directement les notifications de commande sont montrés dans ... vous les voyez juste re-commandé sur vous?

Également l'affichage de trois notifications est assez spammy. Qu'en est-il d'en avoir un, dont le contenu montre l'état des 3 minuteurs?

Questions connexes