6

I am creating a multiple stop watch application for which there will be multiple timers running parallel, and each notification binded to each timer.

I am able to create multiple timers with the following code.

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

}

The following is the problem that im facing. Consider there are 3 timer running and 3 notifications in the status bar. When i update timer 2, notification 3(which is at the rightmost end) gets updated, but what i really want to do is to update the second notification(middle one). When i print the notification id's, im seeing the right values. I cant comprehend why am i getting this weird behavior?

Chander Shivdasani
  • 9,878
  • 20
  • 76
  • 107

2 Answers2

4

It sounds like your intents are cached (which is the factory default)

Try adding a unique setAction('anystring'+timestamp) or a count value, it must be unique as explained in this question

intent.setAction("actionstring" + System.currentTimeMillis());
Community
  • 1
  • 1
Pentium10
  • 204,586
  • 122
  • 423
  • 502
1

An application can't really directly control the order notifications are shown in... are you just seeing them re-ordered on you?

Also posting three notifications is pretty spammy. What about having one, whose content shows the state of all 3 timers?

hackbod
  • 90,665
  • 16
  • 140
  • 154