Я пытаюсь запустить, завершить и сбросить + перезапустить таймер, используя два разных оператора if
в методе onDataChange
. То, что я не могу заставить работать, это заставить таймер перезапуститься, если первый оператор if
снова срабатывает после того, как второй остановит таймер. После объявления класса вверху у меня есть
Timer firstTestTimer = new Timer();
TimerTask increaseByTwo = new TimerTask() {
@Override
public void run() {
incrementalCount = incrementalCount + 2;
System.out.println(incrementalCount);
}
};
, а в методе onCreate
у меня есть ссылка Firebase с ValueEventListener
со следующим кодом:
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String Motion1 = dataSnapshot.child("Enter").getValue().toString();
if(Motion1.equals("YES")){
incrementalCount = 0;
firstTestTimer.schedule(increaseByTwo, 2000,2000);
}
if(Motion1.equals("STOP")){
firstTestTimer.cancel();
firstTestTimer.purge();
System.out.println("Total seconds elapsed since sensor showed YES: "+incrementalCount);
if(incrementalCount > 11){
System.out.println("The difference is greater than 11 seconds");
}
}
}
На данный момент, когда значение Firebase первоначально изменяется на «ДА», таймер запускается и каждые две секунды увеличивается incrementalCount
на 2. Когда значение Firebase меняется на «STOP», таймер показывает правильное количество секунд, которое Прошло. Вот проблема: когда значение Firebase снова меняется на «ДА», приложение вылетает и дает мне некоторое изменение java.lang.IllegalStateException: Task already scheduled or cancelled
Можно ли сбросить и перезапустить таймер со счетом fre sh всякий раз, когда значение Firebase изменяется на « ДА"? Спасибо!