【发布时间】:2014-01-23 22:32:19
【问题描述】:
我已经初始化了一个 int 变量i = 0。我的代码有一个无限循环,当活动开始时会立即检查它。在这个循环中,我需要在一段时间间隔(例如 3 秒)后执行某些任务。我的代码是这样的:
while(1){
if (System.currentTimeMillis() - learningTime > 3000) {
learningTime = System.currentTimeMillis();
i++;
}
}
由于System.currentTimeMillis() - learningTime > 3000 在我的程序执行开始时为真,i 将快速递增到 1,之后每 3 秒递增一次。
如何在活动开始后3秒内强制i从0递增到1?
【问题讨论】:
-
你应该使用 Handler 来处理这类事情,以免阻塞主线程。
-
使用无限循环暂停处理不是一个好主意。在 UI 线程上,您将使您的应用程序无响应。在后台线程上,请改用 thread.sleep。您可以在您的 UI 线程中创建一个处理程序,并使用 postDelayed 方法在经过指定的时间后让一些代码在其中运行。
-
@W.K.S 好主意。很高兴告诉我如何实现处理程序来执行此任务?
-
当然 :) 我已经发布了答案。
标签: java android loops time conditional