定时器应运行一次,但间隔时间不同

gho*_*ker 1 android timer

我有一个按钮,我想第一次将定时器设置为5秒,它应该在完成5秒后完成一些任务.此外,如果用户单击按钮2次,它应该启动计时器10秒,10秒后它应该执行特定的任务.如果用户点击第三次,它应该停止所有运行的计时器.所以我不知道如何实现计时器一次我搜索的是这个.但是在这个链接中它会在特定的时间段后不断重复,而我想要运行一次.

现在我想要什么

  • 首先点击(5秒)启动计时器,如果同时用户点击第二次,则应设置带有新时间段的计时器,如果用户点击第三次,则取消所有计时器.
  • 我不想使用睡眠方法使用Thread计时器.
  • 我想要与android 5.0 v中的相机应用程序中的行为相同.

所以请告诉我如何执行此任何代码和源代码将不胜感激.

Kun*_*unu 6

在您提供的链接中,如果您稍微努力一点,您将找到答案.

对于重复任务:

new Timer().scheduleAtFixedRate(task, after, interval);
Run Code Online (Sandbox Code Playgroud)

对于单次任务:

new Timer().schedule(task, after);
Run Code Online (Sandbox Code Playgroud)

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

对于重复任务:

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

对于单次任务:

new Timer().schedule(task, after * numberOfTimeBtnClked);
Run Code Online (Sandbox Code Playgroud)

您必须在该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");
                            }
                        });
                    }
                };
        }
}
Run Code Online (Sandbox Code Playgroud)

在事件开始按钮上单击调用:

startTimer();
Run Code Online (Sandbox Code Playgroud)