2015-11-09 28 views
1

我是Android应用程序开发的新手。我想在某段时间后调用某种方法,但我无法做到这一点。我试过的方法包括postDelayed方法。Android:如何在特定时间后调用某种方法?

这是我要执行的代码后,2000毫秒

private void computersTurn() { 
    rollButton.setEnabled(false); 
    holdButton.setEnabled(false); 
    while (currentTurn=='C' && cTurn<=20 && cTotal<=100) { 
     rollDice();//TO BE EXECUTED AFTER INTERVALS 
    } 
    hold(); 
    rollButton.setEnabled(true); 
    holdButton.setEnabled(true); 
} 

为整个活动的代码可以在这里找到:http://pastebin.com/bzkfydpL

回答

1

试试这个代码耽误你的函数的执行:

private int DELAY = 1500; // Delay time in milliseconds 

new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       computersTurn(); 
      } 
     }, DELAY); 
+0

@lulian谢谢,但用户界面冻结与此方法。 –

+1

这是您的问题的可接受答案。它确实在给定的延迟后执行代码。您的UI冻结的原因是因为您在computersTurn()期间尝试在主/ UI线程上执行的工作。您需要将该代码执行的位置移至新线程。如果你想更新任何UI元素,你当然必须返回到主线程。 Android指南:http://developer.android.com/training/multiple-threads/communicate-ui.html – JoeyG

+1

是的,你应该使用AsyncTask在不同的线程中完成它,并且不要阻塞UI。 – V01D1

相关问题