内循环延迟

时间:2016-04-17 19:12:57

标签: java android

您好我想实现这样的行为: 每一秒我想从List获取一个字符串并打印出来。 (实际上我希望我的观点为: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);

    }

但是这个解决方案不起作用。 我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:0)

为什么要阻止UI线程? : - (

for (String str : layoutsList) {
   Log.d("LevelOneFragment", "tick" + str);
   i++;
   Thread.sleep(1000);
}

答案 1 :(得分:0)

现在,您正在为处理程序上的所有工作设置延迟1000毫秒。这意味着每个工作项目将基本上同时发生,因为循环执行得很快。

相反,为什么不尝试以越来越大的延迟安排每项工作,例如(i + 1)* 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);