我已经初始化了一个 int 变量i = 0
。我的代码有一个无限的 while 循环,当 Activity 开始时立即检查该循环。在此循环中,我需要在一段时间间隔(例如 3 秒)后执行某些任务。我的代码与此类似:
while(1){
if (System.currentTimeMillis() - learningTime > 3000) {
learningTime = System.currentTimeMillis();
i++;
}
}
由于 System.currentTimeMillis() -learningTime > 3000
在程序执行开始时为 true,因此 i
将快速增加到 1
以后每 3 秒增加一次。
如何在 Activity 开始后 3 秒内强制 i
从 0
递增到 1
?
最佳答案
将 System.currentTimeMillis() 值分配给learningTime,使其为 0 > 3000
learningTime = System.currentTimeMillis()
而且,无论如何你都会用这段代码阻塞主线程。
这可以是 Handler 的一个例子
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run()
{
handler.postDelayed(this, 3000);
}
};
handler.postDelayed(runnable, 3000);
Handler class
Runnable
Handler postDelayed
无论如何,你不再需要learningTime
和i
(?)
关于java - 如何防止 if 语句在第一次检查其条件时只执行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951359/