odniesienie dla Alarm Manager mówi, żeandroid zapobiec natychmiastowe spust obsługi alarmu, jeśli alarm czas upłynął na dzień
Jeśli czas wyzwalania zaznaczono to w przeszłości, alarm zostanie wyzwolony natychmiast.
Mam do czynienia z tym problemem w mojej aplikacji. Oto mój kod menedżera alarmów:
Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class);
pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
Czy istnieje obejście tego problemu?
----- EDIT ------
Pisałem jakiś kod, aby ocenić, czy ustawiony czas alarmu jest przed obecnym czasie. Oto część z wyżej odpowiednich zmian:
Calendar calendar = Calendar.getInstance();
long currentTime = calendar.getTimeInMillis();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
long setTime = calendar.getTimeInMillis();
Timestamp setTimestamp = new Timestamp(setTime);
Timestamp currentTimestamp = new Timestamp(currentTime);
if (setTimestamp.after(currentTimestamp))
{
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingDinnerIntent);
}
else
{
}
Co powinno I alarmManager
w przypadku setTimestamp
jest przed currentTimestamp
?