我已經在這里看到了很多問題,但對我沒有任何幫助。我想在每 1 秒后在文本視圖中設定文本。這是我嘗試過的:
List<Integer> numbers = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.ds);
for (int i = 1; i < 90; i ) {
numbers.add(i);
}
Collections.shuffle(numbers);
for (int i = 0; i < numbers.size(); i ) {
textView.setText(i "");
}
}
這會立即執行任務,并且只看到最后一個數字。然后這個:
List<Integer> numbers = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.ds);
for (int i = 1; i < 90; i ) {
numbers.add(i);
}
Collections.shuffle(numbers);
for (int i = 0; i < numbers.size(); i ) {
textView.setText(i "");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在此螢屏顯示空白,90 秒后,我看到最后一個數字。
那么,我該如何實作呢?
uj5u.com熱心網友回復:
這些都行不通。為了繪圖,主執行緒必須回傳到框架中的 Looper 來處理繪圖命令。換句話說,直到 onCreate 存在才可以繪制。這意味著您的第一個版本只會繪制最后一次。第二個也只會繪制最后一次,但實際上可能會崩潰,因為你在主執行緒上花費了太長時間而沒有完成(你不應該在主執行緒上睡覺)。
解決方案是使用某種計時器機制并利用它。這方面的示例是 TimerTask,或向 Handler 發送訊息并在其中設定文本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470712.html
上一篇:向量串列,其元素之和等于回圈變數