在此代码段中,应用程序会休眠一段时间,但不会将TEXT附加到textStatus(TextView变量),而是显示出错,而应用程序正在关闭。
Thread time_manager = new Thread(){
public void run(){
int interval = 2000;
try{
sleep(interval);
textStatus.append("\nTEXT\n");
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
}
}
};
我做错了什么?
答案 0 :(得分:1)
UI部件的所有更改都应该在UIThread上完成,您应该使用post
或runOnUithread
函数来更新UI。
答案 1 :(得分:1)
要更新UI,您也可以像这样使用Handler,它会更新您的UI,每秒将计数器的值递增1。
int response = 0;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.myid);
thread t = new thread();
t.start();
}
public class thread extends Thread {
public void run() {
while (response < 100) {
handler.sendEmptyMessage(0);
response++;
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
tv.setText("helloworld " + response);
}
};