2015-11-09 61 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

相關問題