java - 如何防止 if 语句在第一次检查其条件时只执行一次?

标签 java android loops time conditional-statements

我已经初始化了一个 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 秒内强制 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(?)

关于java - 如何防止 if 语句在第一次检查其条件时只执行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951359/

相关文章:

java - Java的 "this"中 ".addActionListener(this)"关键字指的是什么

java - 如何从java insert在postgresql中插入包含撇号(单引号)的值?

android - 用于任务管理的 android 和 web 应用程序(可能是 iOS)的裸 JSON、nosql db 或 sqlite

java - 在 JTable 单元格中设置 JButton,无需渲染器

java - 防止支持库的 Gradle 依赖被新版本覆盖

android - 如何将 ImageView 放在其他 ImageView 的前面 (android)

java - Android Studio - 让 Activity 等待加载 UI

javascript - 通过 Javascript 更改 svg 多边形属性

java - 使用 Intellij IDEA 在 For 循环中未初始化循环变量

javascript - JS : Async/await doesn't seem to wait for result in a loop