我希望在可更改的文本中显示1到100。我喜欢使用sleep()函数,因此看起来它从1到100增加。我的代码是
for(int i= 0;i<100;i++) {
scorelevel.setText(String.valueOf(i));
try{
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
}
}
但它没有正确显示。任何帮助或建议表示赞赏。
答案 0 :(得分:5)
不要阻止UI线程,而是使用AsyncTask
答案 1 :(得分:0)
使用Timer
和TimerTask
执行任何基于时间的任务。
答案 2 :(得分:0)
您可以使用runOnUiThread启动计数器,将textView更新为:
private boolean mClockRunning=false;
private int millisUntilFinished=0;
public void myThread(){
Thread th=new Thread(){
@Override
public void run(){
try
{
while(mClockRunning)
{
Thread.sleep(1000L);// set time here for refresh time in textview
YourCurrentActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if(mClockRunning)
{
if(millisUntilFinished==100)
{
mClockRunning=false;
millisUntilFinished=0;
}
else
{
millisUntilFinished++;
scorelevel.setText(String.valueOf(millisUntilFinished));//update textview here
}
}
};
}
}catch (InterruptedException e) {
// TODO: handle exception
}
}
};
th.start();
}
答案 3 :(得分:0)
您也可以使用TimerTask
(link)。