Таймер должен работать один раз, но с разными интервалами
У меня есть кнопка, на которой я хочу установить таймер на 5 секунд в первый раз, и он должен выполнить некоторую задачу после завершения 5 секунд. Также, если пользователь нажимает кнопку 2 раза, он должен запускать таймер в течение 10 секунд, а через 10 секунд он должен выполнять определенную задачу. и если пользователь нажмет третий раз, он должен остановить все таймеры. так что у меня не знаю, как реализовать таймер на одно время, что у меня есть поиск является это. Но в этой ссылке он непрерывно повторяется через определенный период времени, тогда как я хочу запустить один раз.
Теперь, что я хочу
- Чтобы запустить таймер с первого щелчка (5 секунд), и если между тем пользователь нажимает второй раз, он должен установить таймер с новым периодом времени, и если пользователь нажмет третий раз, он отменяет все таймеры. Я не хочу использовать Thread timer, используя метод sleep. Я хочу такое же поведение, как в приложении для камеры в android 5.0 v.
Поэтому, пожалуйста, скажите мне, как это сделать, и любой код и исходный код будут оценены.
В приведенной ссылке вы найдете ответ, если попробуете немного усерднее.
Для повторяющейся задачи:
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();