2015-04-07 54 views
0

我有一个按钮,我想在第一次设置计时器5秒钟,它应该完成5秒后执行一些任务。同样,如果用户点击按钮2次,它应该启动计时器10秒,10秒后它应该执行特定的任务。如果用户第三次点击,它应该停止所有运行定时器。所以我不知道如何实现定时器一次 我有什么搜索是this。但是在这个环节,它会在特定的时间段之后不断重复,而我想运行一次。计时器应运行一次,但有不同的间隔

现在我想

  • 要与第一次点击(5秒)启动定时器,并同时用户点击第二次应该设定的计时与新的时间段,如果用户点击第三次就取消了所有定时器。
  • 我不想使用使用睡眠方法的线程计时器。
  • 我想相同的行为,因为在相机应用中的Android 5.0诉

所以,请告诉我如何做到这一点的任何代码和源代码,将不胜感激。

回答

5

在您提供的链接中,如果您尝试一点点努力,您会找到答案。

对于重复任务:

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

有关任务的单次运行:

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

所以,你需要做的是保持临时变量保持跟踪可以使用第二种方法,如

对于重复任务:

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

有关任务的单次运行:

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

你必须通过TimerTask方法,而不是任务,该方法。

**对于更新下面的代码你的TextView使用,而忘记了什么我已经上面写的**

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"); 
          } 
         }); 
        } 
       }; 
     } 
} 

在事件开始按钮,点击呼叫:

startTimer(); 
+0

我会尝试,但能你告诉我,它会在Ui线程上运行吗? –

+0

不,它会运行在不同的线程上。 TimerTask将在不同的线程上运行。如果你不想在主线程上运行,那么使用'runOnUiThread'。 – Kunu

+0

你是对的。现在我想按时间在屏幕上显示时间,我的意思是A倒计数,以显示剩下多少秒。所以我该如何做到这一点? –

相关问题