2012-06-08 1 views
0

Будет ли это работать?Повторное уведомление о тревоге (Android)

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, и единственное, что отличается в тревоге является «я» переменная, которая дает ему новые секунды в зависимости от строки базы данных (в конечном счете, это будет ежедневно уведомление и «i» будет представлять день, а не секунду. Но это для целей тестирования. Я подтвердил, что правильные данные передаются в «i». Я просто не уверен, что это создаст три разных сигнала тревоги:

Так я создаю несколько аварийных сигналов здесь? Или каждый цикл эффективно заменяет только что созданную?

ответ

1

Просто на основании того, что говорят документы, я бы предположим, что у вас будет только один AlarmManager:

«Если уже запланирован будильник для этого запланированного намерения (при равенстве двух намерений, определяемых filterEquals (Intent)), то он будет удален и заменен этим .» http://developer.android.com/reference/android/app/AlarmManager.html

А вот как Намерение равенство определяется: http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent)

Исходя из этого, я бы сказал, нет, даже если у вас есть уникальные идентификаторы для PendingIntent.