Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 环路内部延迟_Java_Android - Fatal编程技术网

Java 环路内部延迟

Java 环路内部延迟,java,android,Java,Android,嗨,我想实施这样的行为: 每一秒钟我都想从列表中获取一个字符串并打印出来。 (实际上我希望我的视图是:setVisibility(view.Visible),但这是一样的 final Handler handler = new Handler(); for (String str : layoutsList) { handler.postDelayed(new Runnable() { @Override public vo

嗨,我想实施这样的行为: 每一秒钟我都想从列表中获取一个字符串并打印出来。 (实际上我希望我的视图是:setVisibility(view.Visible),但这是一样的

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);