如何创建不同的 PendingIntents

How to Create a Distinct PendingIntents

我有一个允许用户创建提醒以在将来提醒他们的应用程序。我 运行 遇到的问题是,当用户创建多个提醒时,待定意图仅在最新创建的提醒上触发,并显示最早的提醒内容,即:

任务 1,安排在下午 4 点

任务 2,安排在下午 5 点

任务 3,安排在下午 6 点

直到下午 6 点才会出现提醒,这将显示任务 1。

我认为这是因为 PendingIntent:

缺乏唯一性
public class ReminderManager {

    private Context mContext; 
    private AlarmManager mAlarmManager;

    public ReminderManager(Context context) {
        mContext = context; 
        mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    }

    public void setReminder(Long taskId, Calendar when) {

        Intent i = new Intent(mContext, OnAlarmReceiver.class);
        i.putExtra(RemindersDbAdapter.KEY_ROWID, (long)taskId); 

        PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT); 

        mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi);
    }
}

如何确保每个提醒都是唯一的并准时收到正确的时间?

您需要为 requestCode 参数提供 0 以外的内容。尝试使它成为每个请求的唯一 ID。