Android / java – 如何循环等待执行操作
我尝试做显示元素的应用程序。 隐藏before元素时,每个元素都应该开始显示。 每个元素显示2秒。 码:
public void gameStart() { do { data = random.nextInt(6) + 1; if (data == 1) { CountDownTimer cdt = new CountDownTimer(2000, 1000) { @Override public void onTick(long millisUntilFinished) { element1.setVisibility(View.VISIBLE); } @Override public void onFinish() { element1.setVisibility(View.GONE); } }.start(); { CountDownTimer cdt = new CountDownTimer(2000, 1000) { @Override public void onTick(long millisUntilFinished) { element2.setVisibility(View.VISIBLE); } @Override public void onFinish() { element2.setVisibility(View.GONE); } }.start(); } else if (data == 3) { CountDownTimer cdt = new CountDownTimer(2000, 1000) { @Override public void onTick(long millisUntilFinished) { element3.setVisibility(View.VISIBLE); } @Override public void onFinish() { element3.setVisibility(View.GONE); } }.start(); } else if (data == 4) { CountDownTimer cdt = new CountDownTimer(2000, 1000) { @Override public void onTick(long millisUntilFinished) { element4.setVisibility(View.VISIBLE); } @Override public void onFinish() { element4.setVisibility(View.GONE); } }.start(); } else if (data == 5) { CountDownTimer cdt = new CountDownTimer(2000, 1000) { @Override public void onTick(long millisUntilFinished) { element5.setVisibility(View.VISIBLE); } @Override public void onFinish() { element5.setVisibility(View.GONE); } }.start(); } else if (data == 6) { CountDownTimer cdt = new CountDownTimer(2000, 1000) { @Override public void onTick(long millisUntilFinished) { element6.setVisibility(View.VISIBLE); } @Override public void onFinish() { element6.setVisibility(View.GONE); } }.start(); } id = id + 1; text.setText("cos " + id); } while (id < 3);
所有元素都在同一时间显示。 我尝试添加
Thread.sleep(2500);
但是这在窗口中停止了操作。 我尝试在代码后添加此代码:
Timer timer = new Timer(); timer.schedule( new TimerTask() { public void run() { } }, 0, 60*1000);
但循环不停留。 我尝试使用notify()
和wait()
,但它也不起作用。
不建议我在onFinish()
做下一个动作,因为这必须重复很多。 有人有另一个想法吗?
编辑我也使用Handler但它不起作用
我建议你不要在主线程中实现这个代码。 创建一个异步任务,它隐藏一个按钮并在postExequte调用本身。