6

我正在广播一个将由广播接收器接收的意图,因为应用程序仍在运行并且警报服务触发了新的意图,但接收器显示了以前的意图值。根据文档广播接收器在返回 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 触发了第二个意图(第二次警报响起)

4

1 回答 1

8

得到答案,在为 AlarmService 设置挂起意图时必须设置标志 PendingIntent.FLAG_CANCEL_CURRENT...

于 2011-01-29T12:59:21.250 回答