Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

Timer should run One time but with different Intervals

Writer Matthew Martinez

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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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