我有以下代码:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
for (int i = 0; i <= 10; i++) {
Log.d("LOG", "i: " + i);
}
}
}, 5000);
我想将I从0递增到10,并在循环内每次递增5秒。
当前,代码在5秒钟后执行并异步运行for循环,而不是在每次交互之间等待5秒钟。该代码大约需要一分钟才能完成。
答案 0 :(得分:1)
您可以使用处理程序
int i = 0;
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
if(i<11)
{
Log.d("LOG", "i: " + i);
i++;
}else
handler.removeCallbacks(this);
handler.postDelayed(this, 5000);
}
};
//Start Handler
handler.postDelayed(runnable, 5000);
答案 1 :(得分:1)
好的,所以可以在我使用Thread.sleep
的延迟中循环进行for循环,但这将导致应用程序变为空白,直到它执行完for循环为止,因为它在UI上运行。为了克服这个问题,我在后台运行thread.sleep。完整代码如下:
new Thread(new Runnable() {
@Override
public void run() {
try {
for(int i=0;i<10;i++)
{
Thread.sleep(5000);
Log.d("LOG", "i: "+i);
}
} catch (Exception e) {
}
}
}).start();