2015-07-16 2 views
1

Это решение для слушателей событий времени является удивительным: Time Event ListenerMultiple Dynamic Time Event Listener

Вот пример кода:

Calendar cal = Calendar.getInstance(); 
Intent activate = new Intent(context, Alarm.class); 
AlarmManager alarms ; 
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, activate, 0); 
alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
cal.set(Calendar.HOUR_OF_DAY, hour); 
cal.set(Calendar.MINUTE, minute); 
cal.set(Calendar.SECOND, 00); 
alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent); 

Как я могу сделать многие из них динамически? У меня есть цикл for с int i, содержащий все часы, на которые пользователь хочет установить будильник. Я думал о создании динамических экземпляров Calendar (cal + i), но у нас его нет в Java.

ответ

0

Спасибо всем, решение было повторение коды и использование i как код запроса в pendingIntent, как это:

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, i, activate, 0); 
0

Хуан answer является правильным, вы можете использовать один календарь, чтобы вычислить множество меток времени, а затем цикл через них и график тревогу. Следующий код использует массив для отслеживания меток времени и показывает подход более конкретно:

long[] times = new long[3]; 
Calendar cal = Calendar.getInstance(); 
times[0] = cal.getTimeInMillis(); // timestamp of now 
cal.add(HOUR_OF_DAY, 1); 
times[1] = cal.getTimeInMillis(); // in one hour 
cal.add(MINUTES, 30); 
times[2] = cal.getTimeInMillis(); // in one and a half hour 

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, activate, 0); 
for (long time : times) {   
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent); 
}