Я нашел учебник для запланированных уведомлений с использованием Timer и TimerTask, и я пытаюсь реализовать его в своем проекте, чтобы отправлять уведомления каждый день в определенное время.Тем не менее, уведомление запускается только в текущий день, если указанное время не прошло и не появится на следующий день.
Это методы таймера, используемые в моем классе службы уведомлений:
public void startTimer() {
//set a new Timer
timer = new Timer();
//initialize the TimerTask's job
initializeTimerTask();
//schedule the timer
Calendar today = Calendar.getInstance();
Calendar tomorrow = Calendar.getInstance();
tomorrow.set(Calendar.HOUR_OF_DAY, 17);
tomorrow.set(Calendar.MINUTE, 2);
tomorrow.set(Calendar.SECOND, 0);
if(today.compareTo(tomorrow) > 0)
tomorrow.add(DATE, 1);
long initialDelay = tomorrow.getTimeInMillis() - today.getTimeInMillis();
timer.scheduleAtFixedRate(timerTask, initialDelay, 1000*60*60*24);
}
public void initializeTimerTask() {
timerTask = new TimerTask() {
public void run() {
//use a handler to run a toast that shows the current timestamp
handler.post(new Runnable() {
public void run() {
sendNotification();
}
});
}
};
}
Я вызываю класс службы уведомлений в методе onStop () в моем классе MainActivity.class, используя:
startService(new Intent(this, NotificationService.class));
Я не уверен, что это правильное место дляпозвоните, и я не смогу отладить и посмотреть, работает ли таймер после закрытия приложения.