[英]Android - Thread.sleep removes displayed text
我正在編程一個教簡單數學的Android應用。 當用戶輸入正確答案並按下按鈕時,將顯示一條消息,指出它們是否正確。 答案正確后,我希望消息顯示幾秒鍾,然后重新加載活動。
此代碼正確顯示消息:
if (answer == userAnswer){
resultsDisplay.setText(correctResponses[new
Random.nextInt(correctResponses.length)]);
}
else if (answer != userAnswer){
resultsDisplay.setText(incorrectResponses[new
Random().nextInt(incorrectResponses.length)]);
}
當我添加Thread.sleep時,從不設置resultDisplay的文本,或者設置和刪除它們的速度如此之快,以至於我看不到它的發生。 loadActivity()是我用來抽象onCreate方法的一種方法,它在其他所有情況下都可以使用,因此這不是問題。 線程在調用loadActivity之前確實處於睡眠狀態,我只希望resultDisplay文本在該睡眠期間顯示:
if (answer == userAnswer){
resultsDisplay.setText(correctResponses[new
Random.nextInt(correctResponses.length)]);
try {
Thread.sleep(5000);
loadActivity(operand);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (answer != userAnswer){
resultsDisplay.setText(incorrectResponses[new
Random().nextInt(incorrectResponses.length)]);
}
在AsyncTask中調用sleep()
,因為當前您正在休眠UI線程,這不好。
您的asynctask的藍圖應如下所示:
class YourAsync extends AsyncTask{
onPreExecute(){
// show message here
}
doInBackground(){
// sleep here
}
onPostExecute(){
// remove/reset message (whatever your requirement is )
// loadActivity
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.