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