Таймер должен работать один раз, но с разными интервалами

92
9

У меня есть кнопка, на которой я хочу установить таймер на 5 секунд в первый раз, и он должен выполнить некоторую задачу после завершения 5 секунд. Также, если пользователь нажимает кнопку 2 раза, он должен запускать таймер в течение 10 секунд, а через 10 секунд он должен выполнять определенную задачу. и если пользователь нажмет третий раз, он должен остановить все таймеры. так что у меня не знаю, как реализовать таймер на одно время, что у меня есть поиск является это. Но в этой ссылке он непрерывно повторяется через определенный период времени, тогда как я хочу запустить один раз.

Теперь, что я хочу

    Чтобы запустить таймер с первого щелчка (5 секунд), и если между тем пользователь нажимает второй раз, он должен установить таймер с новым периодом времени, и если пользователь нажмет третий раз, он отменяет все таймеры. Я не хочу использовать Thread timer, используя метод sleep. Я хочу такое же поведение, как в приложении для камеры в android 5.0 v.

Поэтому, пожалуйста, скажите мне, как это сделать, и любой код и исходный код будут оценены.

спросил(а) 2021-01-19T17:29:03+03:00 9 месяцев, 1 неделя назад
1
Решение
112

В приведенной ссылке вы найдете ответ, если попробуете немного усерднее.

Для повторяющейся задачи:

new Timer().scheduleAtFixedRate(task, after, interval);

Для одного запуска задачи:

new Timer().schedule(task, after);

Итак, вам нужно сохранить временную переменную, чтобы отслеживать количество кликов, и вы можете использовать второй метод, например

Для повторяющейся задачи:

новый таймер(). scheduleAtFixedRate (задача, после, интервал);

Для одного запуска задачи:

new Timer().schedule(task, after * numberOfTimeBtnClked);

Вы должны передать метод TimerTask вместо задачи в этом методе.

** Для обновления вашего текстового поля используйте ниже код и забудьте о том, что я написал выше **

public void startTimer() {
//set a new Timer
timer = new Timer();

//initialize the TimerTask job
initializeTimerTask();

//run in an interval of 1000ms
timer.schedule(timerTask, 0, 1000); //
}

public void initializeTimerTask() {

timerTask = new TimerTask() {
public void run() {

handler.post(new Runnable() {
public void run() {
timerSince++; //global integer variable with default value 0
if(timerSince == 5 * numberOfBtnClick){
//call your method
timer.cancel;
timerSince = 0;
}else{
//textView.setText(((5 * numberOfBtnClick)-timerSince)+" second left");
}
});
}
};
}
}

На кнопке запуска события нажмите кнопку вызова:

startTimer();

ответил(а) 2021-01-19T17:29:03+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема