我想要一个不是疯狂快速的时钟/计时器,并且强制关闭像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();
}
任何阻止此事的替代方案?我的意思是代码一次又一次地快速发生。
答案 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