2011-01-29 8 views
5

Я передаю намерение, которое будет принято широковещательным приемником, поскольку приложение все еще работает, и новое намерение запускается службой сигнализации, но приемник показывает предыдущее намерение стоимость. В соответствии с документами вещательный приемник больше не активен после возврата onReceive(), поэтому приемник должен показывать следующие значения намерений, которые запускаются службой сигнализации, но этого не происходит, может ли кто-нибудь сказать правильный подход.Передача нового намерения на широковещательный приемник дает дополнительные значения от предыдущего намерения

Это от деятельности вещать Цель:

Intent intent = new Intent(SCH_ALARM_ACTION); 
    intent.setClass(getBaseContext(), SchAlarmReciever.class); 
    intent.putExtra("id", maxId); 
    PendingIntent pi = PendingIntent.getBroadcast(getBaseContext(), 
       0, 
       intent, 
       0); 
    alarmManager.set(AlarmManager.RTC, gc.getTimeInMillis(), pi); 

Это broadreceiver:

@Override 
    public void onReceive(Context context, Intent data) 
       { 
     // TODO Auto-generated method stub 

     if(data.getAction().equals(SchedulerActivity.SCH_ALARM_ACTION)){ 

     int id = data.getIntExtra("id",0); 
     Toast.makeText(context, "in receiver "+String.valueOf(id), Toast.LENGTH_LONG).show(); 
       } 

здесь тост показывает идентификатор, который отправляется на первый эфир из alarmservice даже когда второе намерение увольняют из alarmservice (второй раз сигнал тревоги отключается)

+0

Можете ли вы опубликовать фрагмент кода? –

+0

Я делаю что-то подобное ЗДЕСЬ !!! http://stackoverflow.com/questions/14571564/android-pendingintent-extras-not-received-by-broadcastreceiver/14612215#14612215 – toobsco42

ответ

4

Получил ответ, должен установить флаг PendingIntent.FLAG_CANCEL_CURRENT при настройке ожидающего намерения для AlarmService ...

+0

@om Спасибо, что работает для меня –

+0

PendingIntent.FLAG_UPDATE_CURRENT также работает – Punithapriya