Отправка нового намерения в широковещательный приемник дает дополнительные значения из предыдущего намерения
Я передаю намерение, которое будет получено широковещательным приемником, так как приложение все еще работает, и служба оповещения запускает новое намерение, но получатель показывает предыдущее значение намерения. В соответствии с документами широковещательный приемник больше не активен после возврата 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);
Это широковещательный приемник:
@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();
}
здесь toast показывает id, который отправляется первой трансляцией из alarmservice, даже когда второе срабатывает от alarmservice(срабатывает второй таймер)
1 ответ
Получил ответ, должен установить флаг PendingIntent.FLAG_CANCEL_CURRENT при установке ожидающего намерения для AlarmService...