我已经初始化了一个int变量i = 0
。我的代码有一个无限的while循环,活动开始时会立即检查该循环。在此循环中,我需要在一定时间间隔(例如3秒)后执行某些任务。我的代码与此类似:
while(1){
if (System.currentTimeMillis() - learningTime > 3000) {
learningTime = System.currentTimeMillis();
i++;
}
}
由于
System.currentTimeMillis() - learningTime > 3000
在我的程序执行开始时为true,因此i
将快速递增至1
,以后每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
(?)