创建一个计时器

时间:2013-11-16 20:48:47

标签: android timer sleep

我正在尝试创建一个计时器,在计时器结束后,将调用一个函数...

例如,我有函数Foo。我想创建一个计时器,1.5秒后会调用它..

类似的东西:

Timer(Foo(), 2000);

我找到了这段代码:

    private Handler handler = new Handler(); // Creating new handler
    handler.postDelayed(runnable, 1500); // Creating a timer for 1.5 seconds

和这个功能:

private Runnable runnable = new Runnable() 
{
       @Override
       public void run() 
       {
          Foo();

          handler.postDelayed(this, 1500);
       }
    };

我的问题是,有时候计时器工作正常,通常是前2~3次,之后,它不再是1.5秒计时器,而是变成0.3秒计时器({{1}正在被调用,计时器将持续的时间越少(例如,不会等待1.5秒来调用Foo,但更少)

为什么? 我知道在C ++中如果我编写控制台应用程序,我可以使用Sleep ..也许我可以做这样的事情:

handler.postDelayed(runnable, 1500);

谢谢!

编辑:我已经回答了我自己的问题。

2 个答案:

答案 0 :(得分:1)

你可以在Android中使用Timer类,并设置一个重复计时器,并有一个初始延迟。

Timer timer = new Timer();
timer.schedule(TimerTask task, long delay, long period)

TimerTask非常像Runnable

请参阅:http://developer.android.com/reference/java/util/Timer.html

答案 1 :(得分:0)

我使用了2个计时器:

handler.postDelayed(runnable, 1500); // Creating a timer for 1.5 seconds

这创建了一个1.5秒的定时器,而在定时器循环内:

private Runnable runnable = new Runnable() 
{
   @Override
   public void run() 
   {
      Foo();

      handler.postDelayed(this, 1500);
   }
};

我再次打电话给handler.postDelayed(this,1500);,这使得2个计时器 - >导致时间错误。