我正在开发一款简单的游戏。我希望在按钮点击时执行的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
循环的每次执行。
答案 0 :(得分:6)
建议不要阻止主线程,而是建议创建一个Runnable并将其传递给现有的未使用的Handler。也许:
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);
}
答案 1 :(得分:0)
@Sam解决方案的替代方法是使用javax.swing。Timer。