【问题标题】:Interval when using TimerTask in conjunction with Timer is not working将 TimerTask 与 Timer 结合使用时的间隔不起作用
【发布时间】:2015-04-05 04:51:12
【问题描述】:

我正在使用timer.schedule(minuteTask, 0, 1000*60) 定期生成新颜色。正如我记录的下面的 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);

知道如何解决这个问题吗?

【问题讨论】:

  • 似乎您没有考虑 EDT。尝试使用秋千Timer
  • 不要使用定时器,而是使用处理程序
  • @pskink 感谢您的提示。在做了一些研究后,我发现处理程序更好。它现在可以工作了:) 我正在使用 handler.postDelayed();

标签: java android timer intervals


【解决方案1】:

使用这个

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

【讨论】:

    【解决方案2】:

    您好,我认为您应该使用 Timer 的scheduleAtFixedRate(..) 功能。这将帮助您在给定的时间间隔内更改颜色。

    一个简单的 schedule() 方法将立即执行,而 scheduleAtFixedRate() 方法需要一个额外的参数,用于在特定时间间隔内再次重复任务。

    看下面的代码sn-p:

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

    这将在 30 秒时间间隔结束后执行一次。一种时间输出动作。

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

    这将在 1 秒后开始,并每隔 30 秒重复一次。

    【讨论】:

      猜你喜欢
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2014-04-19
      • 2021-12-15
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      相关资源
      最近更新 更多