重复警报通知(Android)

时间:2012-06-08 19:33:41

标签: android notifications alarmmanager

这会有用吗?

  public void setRepeatingAlarm() {

    ArrayList<Integer> AlarmDays = datasource.getDays();
    final int _id = (int) System.currentTimeMillis();

    Log.d("AlarmManageDebt", String.valueOf(AlarmDays));

    for (int i : AlarmDays) {

        Calendar cal = Calendar.getInstance();
        if (cal.get(Calendar.SECOND) >= 30)
            cal.add(Calendar.MINUTE, 1);
        cal.set(Calendar.SECOND, Integer.valueOf(i));

        Intent intent = new Intent(this, TimeAlarm.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, _id,
                intent, PendingIntent.FLAG_CANCEL_CURRENT);
        am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                60 * 1000, pendingIntent);
    }
}

我有pendingIntent的唯一ID,并且警报中唯一不同的是“i”变量,它根据数据库行给出新的秒数(最终,这将是每日通知,“i”将代表一天,而不是一秒。但这是出于测试目的。我已经确认正确的数据正在“i”中传递。我只是不确定这是否会产生三种不同的警报?

我在这里创建多个警报吗?或者每个循环是否有效地取代了刚创建的循环?

1 个答案:

答案 0 :(得分:1)

根据文档的说法,我想你只有一个AlarmManager:

“如果已安排此Intent的警报(具有由filterEquals(Intent)定义的两个意图相等),则它将被删除并替换为此。” http://developer.android.com/reference/android/app/AlarmManager.html

以下是Intent平等的确定方式: http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent

基于此,我会说不,即使您有PendingIntent的唯一ID。