TaskReminer只处理一个警报



有一个警报提醒。如何使警报多次触发,并在每次提醒时触发?只有一个闹钟工作,其余的都被覆盖。

法典:

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(如果有)。

相关内容

  • 没有找到相关文章

最新更新