Android线程无效

时间:2011-09-25 15:49:44

标签: android multithreading

在此代码段中,应用程序会休眠一段时间,但不会将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{
            }
        }
    };

我做错了什么?

2 个答案:

答案 0 :(得分:1)

UI部件的所有更改都应该在UIThread上完成,您应该使用postrunOnUithread函数来更新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);
        }
    };