TaskReminer 只工作一个闹钟
TaskReminer works only one alarm
有闹钟提醒。如何让警报触发不止一次,并在每次提醒时触发?只有一个闹钟有效,其余被覆盖
代码:
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) {
if (when.getTimeInMillis() < System.currentTimeMillis()) {
return;
}
Intent i = new Intent(mContext, OnAlarmReceiver.class);
i.putExtra(DbAdapter.KEY_ROWID, (long)taskId);
PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT);
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), pi);
}
}
我明白问题出在requestCode,但我不明白如何解决..
PendingIntent pi = PendingIntent.getBroadcast(mContext,{unique id}, i, PendingIntent.FLAG_ONE_SHOT);
将为每个待处理的意图提供一个唯一的 ID。创建一个随机 ID 并将该 ID 作为唯一 ID 分配给未决意图。否则挂起的意图将被覆盖
为唯一 ID 创建随机数
Random rand = new Random();
int n = rand.nextInt();
或使用数据库中的 ID(如果有的话)。
有闹钟提醒。如何让警报触发不止一次,并在每次提醒时触发?只有一个闹钟有效,其余被覆盖
代码:
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) {
if (when.getTimeInMillis() < System.currentTimeMillis()) {
return;
}
Intent i = new Intent(mContext, OnAlarmReceiver.class);
i.putExtra(DbAdapter.KEY_ROWID, (long)taskId);
PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT);
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), pi);
}
}
我明白问题出在requestCode,但我不明白如何解决..
PendingIntent pi = PendingIntent.getBroadcast(mContext,{unique id}, i, PendingIntent.FLAG_ONE_SHOT);
将为每个待处理的意图提供一个唯一的 ID。创建一个随机 ID 并将该 ID 作为唯一 ID 分配给未决意图。否则挂起的意图将被覆盖
为唯一 ID 创建随机数
Random rand = new Random();
int n = rand.nextInt();
或使用数据库中的 ID(如果有的话)。