Android计时器/时钟

时间:2013-09-16 00:51:29

标签: java android loops timer clock

我想要一个不是疯狂快速的时钟/计时器,并且强制关闭像while循环一样。 这支部队关闭了:

while(loopEnabled == true)
{
    //Do stuff
   Toast toast Toast.makeText(this, "Hi!", 10000);
    toast.show();
}

这样做:

public void loop()
{
    //Do stuff
    Toast toast Toast.makeText(this, "Hi!", 10000);
    toast.show();

    resetLoop();
}

public void resetLoop()
{
    Thread.sleep(100);
    loop();
}

任何阻止此事的替代方案?我的意思是代码一次又一次地快速发生。

2 个答案:

答案 0 :(得分:2)

请查看Handler,尤其是postAtTime或postDelayed方法。

例如:

private int mInterval = 1000; // in ms, so 1s here
private Handler mHandler;

@Override
protected void onCreate(Bundle bundle)
{

  mHandler = new Handler();
}

Runnable mRepeatingTask = new Runnable() 
{
     @Override 
     public void run() {

          // do something here

          // schedule run again for mTnterval ms from now
          mHandler.postDelayed(mRepeatingTask , mInterval);
     }
};

void startRepeatingTask()
{
    mRepeatingTask.run(); 
}

void stopTask()
{
    mHandler.removeCallbacks(mRepeatingTask);
}

答案 1 :(得分:1)

你是在UI线程中这样做的吗?如果是这样,请避免它,因为您很可能会获得“应用程序无响应”对话框。

在android中,可以使用TimerTask和Handlers实现。

检查此链接是否包含所有示例代码。 Async task, handler and timer