我正在尝试创建一个计时器,在计时器结束后,将调用一个函数...
例如,我有函数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);
谢谢!
编辑:我已经回答了我自己的问题。
答案 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个计时器 - >导致时间错误。