java - 睡在 For 循环中

标签 java android sleep

我正在开发一款简单的游戏。我想在点击按钮时执行的 for 循环的每次交互中等待一小段时间。

我试过使用 Thread.sleep(2000),但没有用。

点击按钮的代码如下:

public void playClick(View v) {
        String item;
        try{
            final Handler handler = new Handler();
        for (int i = 0; i < stringList.size(); i++) {

             Thread.sleep(2000);
            item = stringList.get(i);

            if(item.equals("left")){

                leftclick();

            }else if(item.equals("right")){

                rightClick();

            }else if(item.equals("up")){

                upClick();

            }else if(item.equals("down")){

                downClick();

            }
        }
        }catch(Exception e){
            Toast.makeText(this, ""+e.toString(), Toast.LENGTH_SHORT).show();
        }

我想在每次执行 for 循环时等待。

最佳答案

不建议阻塞主线程,相反我建议创建一个 Runnable 并将其传递给现有的、未使用的处理程序。也许:

private final Handler handler = new Handler();
private final Runnable runnable = new Runnable() {
    @Override
    public void run() {
        for (String item : stringList) {
            if(item.equals("left")){
                leftclick();
            }else if(item.equals("right")){
                rightClick();
            }else if(item.equals("up")){
                upClick();
            }else if(item.equals("down")){
                downClick();
            }
        }
    }
}

...

public void playClick(View v) {
    // Execute the code inside runnable in 2 seconds
    handler.postDelayed(runnable, 2000);
}

关于java - 睡在 For 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232843/

相关文章:

java - 定义具有多级继承的对象

java - 使用库或算法压缩视频大小的最快方法

java - 源代码可以在运行时操纵其他人或自己吗?

Android 分发限制证书

java - 如何高效遍历Bitmap?

c# - 如何获得与 Thread.Sleep 支持 double 值类似的结果?

Javascript setTimeout() 涉及括号的问题

java - 如何使用 Tomcat 和 IntelliJ IDEA 获取 context.xml

android - 使用recyclerview android过滤男性和女性结果searchview

c - 我怎样才能暂停然后恢复对 `sleep` 的调用