2015-04-05 75 views
0

我使用timer.schedule(minuteTask, 0, 1000*60)以定期生成新顏色。正如你所看到的,我記錄下來的gif,間隔似乎不起作用。將TimerTask與Timer配合使用時的時間間隔不起作用

Annoying blinking gif

Timer timer = new Timer(); 
TimerTask minuteTask = new TimerTask() { 
    @Override 
    public void run() { 
     java.util.Random random = new java.util.Random(); 
     int r = random.nextInt(255); 
     int g = random.nextInt(255); 
     int b = random.nextInt(255); 
    } 
}; 

timer.schedule(minuteTask, 0, 1000*60); 

關於如何解決此問題的任何想法?

+0

看起來好像你沒有考慮EDT。嘗試使用一個鞦韆'定時器' – 2015-04-05 04:53:16

+0

不使用定時器,而是使用處理程序 – pskink 2015-04-05 06:53:52

+0

@pskink感謝您的提示。在做了一些研究之後,我發現那個處理程序更好。它現在工作:)我使用handler.postDelayed(); – HaloMediaz 2015-04-05 15:37:59

回答

0

使用此

new Timer().scheduleAtFixedRate(
    new TimerTask() { 
     @Override 
     public void run() { 
      //put UR code herr 
     } 
    }, 0, 1000); 
0

您好我認爲你應該使用定時器的scheduleAtFixedRate(..)功能。這將幫助您在給定的時間間隔內更改顏色。

一個簡單的schedule()方法將立即執行,而scheduleAtFixedRate()方法需要額外的參數,用於在特定的時間間隔內再次重複任務&。

看看下面的代碼片段:

Timer timer = new Timer(); 
timer.schedule(new performClass(), 30000); 

這將會在30秒的時間週期間隔後執行一次就結束了。一種timeoput行動。

Timer timer = new Timer(); 
//timer.scheduleAtFixedRate(task, delay, period); 
timer.scheduleAtFixedRate(new performClass(), 1000, 30000); 

這將在1秒後開始,並將在每隔30秒的時間間隔重複一次。