如何创建不同的 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。
我有一个允许用户创建提醒以在将来提醒他们的应用程序。我 运行 遇到的问题是,当用户创建多个提醒时,待定意图仅在最新创建的提醒上触发,并显示最早的提醒内容,即:
任务 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。