2015-05-22 25 views
1

现在我有一个延时为5秒的计时器,但是在运行一次后我需要一个不同的延迟。 我正在浏览一些图片,并在第一轮中显示它们5秒钟。之后,它应该显示他们10个seonds。如何在运行时改变定时器的延迟?如何在每次运行时更改Timer的延迟?

什么有发生:

  • 启动计时器
  • 运行5秒钟
  • 更改延迟10秒
+0

复制http://stackoverflow.com/questions/8386545/java-timer-with-not-fixed-delay –

+1

哪'Timer'? 'java.util.Timer'或'javax.swing.Timer'? – MadProgrammer

回答

0

尝试添加一些代码

  • 运行!

    您需要检查计时器是否有5秒钟使其等于10。

    int delayTime = 5; 
    //run first delay 
    if (delayTime == 5){ 
    delayTime = 10; 
    } 
    

    这是这个想法的一些代码,不知道它在你的项目中的外观。

  • 0

    有可以为您的使用情况下,两个办法:

    第一种方法:

    好比说我想要显示的图片1000秒。所以我会执行循环直到1000秒;或者如果你想无限运行,那么你可以改变for循环的条件。下面的代码将在每5秒延迟一次后执行for循环。

    int delayTimeInMiliSec; 
        for(int delayTime = 5 ; delayTime<=1000; delayTime = delayTime+5){ 
         delayTimeInMiliSec = delayTime * 1000; 
         // here Call your method that shows pictures 
         Thread.sleep(delayTimeInMiliSec); 
        } 
    

    第二种方法:

    1. 创建延伸的TimerTask(在java.util包提供)的类。 TimerTask是一个抽象类。
    2. 将您的代码写入您想定期执行的public void run()方法中。

    代码示例:

    import java.util.TimerTask; 
    
        // Create a class extends with TimerTask 
        public class ScheduledTask extends TimerTask { 
    
         // Add your task here 
         @Override 
         public void run() { 
          //show pictures code 
         } 
        } 
    
    import java.util.Timer; 
    
    public class SchedulerMain { 
        public static void main(String args[]) throws InterruptedException { 
    
         Timer time = new Timer(); // Instantiate Timer Object 
         ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class 
         time.schedule(st, 0, 5000); // Create Repetitively task for every 5 secs 
    
    
        } 
    }