如何创建一个不同的PendingIntents

时间:2015-06-11 01:37:10

标签: android alarmmanager android-pendingintent

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

任务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);
    }
}

如何确保每个提醒都是唯一的,并按时获得正确的时间?

1 个答案:

答案 0 :(得分:2)

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