我已经初始化了一个int变量i = 0。我的代码有一个无限的while循环,活动开始时会立即检查该循环。在此循环中,我需要在一定时间间隔(例如3秒)后执行某些任务。我的代码与此类似:

while(1){
if (System.currentTimeMillis() - learningTime > 3000) {
            learningTime = System.currentTimeMillis();

            i++;
        }
}


由于System.currentTimeMillis() - learningTime > 3000在我的程序执行开始时为true,因此i将快速递增至1,以后每3秒递增一次。

活动开始后三秒内如何强制i0增大到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

无论如何,您不再需要learningTimei(?)

10-07 12:24
查看更多