Java 睡懒觉

Java 睡懒觉,java,android,sleep,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(

我正在开发一个简单的游戏。我希望在单击按钮时执行的
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();
        }
public void playClick(视图五){
字符串项;
试一试{
最终处理程序=新处理程序();
对于(int i=0;i

我想在每次执行
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);
}

不建议阻塞主线程,相反,我建议创建一个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);
}

@Sam解决方案的一个替代方案是使用javax.swing..

解决方案的另一个替代方案是使用javax.swing..

“无效”意味着什么?您是否试图在UI线程上运行此代码并收到异常?这是在UI线程中吗?如果是,为了睡眠,您需要派生一个新线程“无效”意思是什么?您是否试图在UI线程上运行此代码并收到异常?这是否在UI线程中?如果是,为了睡眠,您将需要派生一个新线程