Почему TimerTask запускается дважды? - PullRequest
0 голосов
/ 16 января 2020

Я хочу отобразить уведомление в указанное c время для моего android приложения. Например: в 3 часа дня распечатать уведомление. Я использую этот код:

private void checkNotificationStatus() {
     timer.schedule(new TimerTask() {
         @Override
         public void run() {
             addNotificationReminder();
         }
      }, new Date(appointment.getTimeInMillis()));
}

public void addNotificationReminder() {
   System.out.println("i'm here");
}

Итак, таймер работает правильно, но сообщение «Я здесь» отображается дважды, а не один раз. Если я добавлю long вместо date в качестве второго параметра в TimerTask (например, 2000), сообщение будет напечатано только один раз. Тем не менее, если я поставлю: appointment.getTimeInMillis() - System.currentTimeMillis() сообщение будет напечатано дважды еще раз.

Любое предложение?

1 Ответ

2 голосов
/ 17 января 2020

checkNotificationStatus (), вероятно, вызывается два раза. Возможно, поместите println () перед timer.shedule (), чтобы проверить, вызывается ли метод несколько раз или действительно ли это ошибка таймеров.

...