Timer Should Run One Time but with Different Intervals

Timer Should Run One Time but with Different Intervals

I have a button on which I want to set the timer for 5 seconds for the first time and it should perform some task after completing 5 seconds. Also if user click button 2 times it should start timer for 10 seconds and after 10 seconds it should perform specific task. and if user click 3rd time it should stop all running timers. so I have do not know How to implement timer for one time what I have search is this. But in this link it is continuously repeating after specific period of time, whereas I want to run once.

Now what I want

  • To start timer with first click (of 5 seconds)and if meanwhile user click 2nd time it should set timer with with new time period and if user click third time it cancels out all timers.
  • I do not want to use Thread timer using sleep method.
  • I want same behavior as there is in camera app in android 5.0 v.

So please tell me how to do this any code and source code would be appreciated.

1 Answer

In the link you provided you will find the answer if you try little harder.

For a repeating task:

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

For a single run of a task:

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

So what you need to do is to maintain temporary variable to keep track of number of clicks and you can use second method like

For a repeating task:

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

For a single run of a task:

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

You have to pass the TimerTask method instead of task in that method.

**For updating your textview use below code and forget about whatever I have written above **

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

       //initialize the TimerTask's 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");
                            }
                        });
                    }
                };
        }
}

On event start button click call:

startTimer();
13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Elena Rostova
Author

Elena Rostova

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.