Отправка нового намерения в широковещательный приемник дает дополнительные значения из предыдущего намерения - PullRequest
6 голосов
/ 29 января 2011

Я передаю намерение, которое будет получено широковещательным приемником, так как приложение все еще работает, и новое намерение запускается службой сигнализации, но получатель показывает предыдущее значение намерения. В соответствии с документом, широковещательный приемник больше не активен после возврата 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 показывает идентификатор, который отправляется первой трансляцией из alarmservice, даже когда второе срабатывание срабатывает из alarmservice (срабатывает второй раз)

1 Ответ

6 голосов
/ 29 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...