Try using setData() to store your message instead of extras: that forces the Intent to be seen as a new one. Or you can keep using extras and create some other unique token every time for setData().
Lee p.s. you can also try FLAG_CANCEL_CURRENT at the end of your getService call (read the PendingIntent docs first). On Sep 25, 9:39 pm, "Jason B." <jason.ba...@gmail.com> wrote: > Hi, > > I'm creating an intent that I'm pushing to the AlarmManager so that a > service will be run at a later time. I have a single string value I > need to pass with the intent so the service knows what to "do" when > it's onStart() is called. > > Here is the code that sets up my intent and pushes it to the > AlarmManager > > Intent myintent = new Intent(); > myintent.setClass(mContext, RemindMeLater_Service.class); > myintent.putExtra("ReminderText", mEditText_Reminder.getText().toString > ()); > mPendingIntent = PendingIntent.getService(this, 0, myintent, 0); > > // Use the AlarmManager to schedule the PendingIntent > mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, alarmTime, > mPendingIntent); > > Notice the line: > > myintent.putExtra("ReminderText", mEditText_Reminder.getText().toString > ()); > > Essentially I'm trying to "change" the extended data referenced by the > same name in the putExtra call. Note also that the "myintent" Intent > is freshly created everytime this block of code executes, so it should > be a new instantiated Intent object. The text that is put into the > extended data comes from an EditText view on my activity. > > The code in the service that is trying to pull the string out is: > > public void onStart(Intent intent, int startId) { > > // Increment mReminderId to ensure each notification is unique to > this context > String reminderText = intent.getStringExtra("ReminderText"); > > //do stuff with the "reminderText" we just got out of the intent > // ........... > } > > Seems pretty simple, and logical. So here comes the problem. This > works ONCE. The first time the intent is created and the extended > data is added with .putExtra( ), when the AlarmManager goes off and > starts the service, the remidnerText is exactly what I put in. > However, subsequent calls to this code, creating the intent, adding a > new string using .putExtra( ), the AlarmManager goes off, service gets > onStart() called, now the reminderText still has the same value from > the first call. It keeps holding onto the same value for ever until I > uninstall the .apk and reinstall (i.e. Rebuild ->Run through eclipse > on the emulator or a real device). > > I've tried putting breakpoints right at this line and verified the new > string being passed into putExtra() has changed: > > myintent.putExtra("ReminderText", mEditText_Reminder.getText().toString > ()); > > And then a breakpoint at the service line and verified that it still > has the previous value: > > String reminderText = intent.getStringExtra("ReminderText"); > > I'm a little lost at what to do next. Maybe the bundle that is > created is when I call putExtra() is being cached? I've tried doing > System.gc() right before I create my new intent each time and still no > luck. Thanks for any insight, I hope I've provided enough detail. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---