使用一个警报管理器取消另一个
Use one alarm manager to cancel another
我正在做提醒申请。它会每隔一段时间提醒一次。例如,每五分钟提醒一个小时。在这种情况下,我试图设置两个闹钟。一个用于每五分钟提醒一次,另一个用于一小时后取消提醒闹钟。这是我的代码。
private void createIntervalNotification(int reminder, int dhour, int dminute){ //reminder in min
int interval = (reminder)*60*1000;
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+interval, interval, getPendingIntent(this,REMINDER_ID));
int duration = (dhour*60 + dminute)*60*1000;
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+duration,getPendingIntent(this,CANCEL_REMINDER_ID));
}
private static PendingIntent getPendingIntent(Context ctxt, int id) {
Intent intent1 = new Intent(ctxt, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctxt, id,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
我有一些问题要解决(设置提醒 5 分钟,持续 1 小时)。
1) 我可以用我的方法做到这一点吗?使用一个闹钟取消另一个?
2) 两个alarm可以共用一个broadcastReceiver吗?如果是,如何区分它是由哪个报警器调用的?
3) 是否有其他方法可以做到这一点?
取消闹钟与设置闹钟几乎完全一样。您只需在 AlarmManager 上调用与创建时不同的方法来取消。只需确保 AlarmManager 中的待处理意图和广播 ID 相同即可。
通过在 Intent 上设置 Extras 来区分警报。
我正在做提醒申请。它会每隔一段时间提醒一次。例如,每五分钟提醒一个小时。在这种情况下,我试图设置两个闹钟。一个用于每五分钟提醒一次,另一个用于一小时后取消提醒闹钟。这是我的代码。
private void createIntervalNotification(int reminder, int dhour, int dminute){ //reminder in min
int interval = (reminder)*60*1000;
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+interval, interval, getPendingIntent(this,REMINDER_ID));
int duration = (dhour*60 + dminute)*60*1000;
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+duration,getPendingIntent(this,CANCEL_REMINDER_ID));
}
private static PendingIntent getPendingIntent(Context ctxt, int id) {
Intent intent1 = new Intent(ctxt, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctxt, id,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
我有一些问题要解决(设置提醒 5 分钟,持续 1 小时)。
1) 我可以用我的方法做到这一点吗?使用一个闹钟取消另一个?
2) 两个alarm可以共用一个broadcastReceiver吗?如果是,如何区分它是由哪个报警器调用的?
3) 是否有其他方法可以做到这一点?
取消闹钟与设置闹钟几乎完全一样。您只需在 AlarmManager 上调用与创建时不同的方法来取消。只需确保 AlarmManager 中的待处理意图和广播 ID 相同即可。
通过在 Intent 上设置 Extras 来区分警报。