Java 环路内部延迟
嗨,我想实施这样的行为: 每一秒钟我都想从列表中获取一个字符串并打印出来。 (实际上我希望我的视图是:setVisibility(view.Visible),但这是一样的Java 环路内部延迟,java,android,Java,Android,嗨,我想实施这样的行为: 每一秒钟我都想从列表中获取一个字符串并打印出来。 (实际上我希望我的视图是:setVisibility(view.Visible),但这是一样的 final Handler handler = new Handler(); for (String str : layoutsList) { handler.postDelayed(new Runnable() { @Override public vo
final Handler handler = new Handler();
for (String str : layoutsList) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("LevelOneFragment", "tick" + str);
i++;
}
}, 1000);
}
但这个解决方案不起作用。
如何正确执行此操作?为什么要阻止UI线程-(
现在,您正在将处理程序上的所有工作的延迟设置为1000ms。这意味着每个工作项基本上将同时发生,因为循环执行得很快 相反,您为什么不尝试以越来越大的延迟来安排每项工作,例如(i+1)*1000
for(int i=0;i
UI阻塞实际上是一件坏事!你能做同样的事情吗,但不要UI阻塞?我已经编辑了我的答案。
for (String str : layoutsList) {
Log.d("LevelOneFragment", "tick" + str);
i++;
Thread.sleep(1000);
}
for (int i = 0; i < layoutsList.size(); i++) {
final String str = layoutsList.get(i);
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("LevelOneFragment", "tick" + str);
}
}, (i+1)*1000);