在指定的时间间隔后在无限循环中更新textview

时间:2014-12-18 09:48:58

标签: android

private void eastablish_connection(){
    // TODO Auto-generated method stub
    make();
    while (check)
    {

        if ( th == null)
        {
            make();
        }
            th.start();
            try
            {
                th.join();
            }
            catch(Exception e)
            {
                Log.d("failed", "joining");
            }
            set();
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try
            {
                th.join();
            }
            catch(Exception e)
            {
                Log.d("failed", "joining");
            }
            th.interrupt();
            th = null;

}

public void set()
{
    fridge1 = (TextView) findViewById(R.id.textView1);
    fridge1.setText("indoor = " + my_connection.get_indoor_temperature());
}
public void make(){
    my_connection = new Make_Connection();
    th = new Thread(my_connection);
}

我需要的是在线程完成后不断更新我的文本视图,但它根本没有显示任何内容。设置函数被正确调用但它没有显示任何内容。?请帮助

3 个答案:

答案 0 :(得分:0)

你不能在UI线程中拥有无限循环。您在屏幕上看不到任何内容,因为您的UI线程在您的infintie循环中被锁定。

如果您想每X秒执行一次操作,可以使用CountDownTimer

答案 1 :(得分:0)

你可以使用简单的逻辑......

new Thread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            try {
                Thread.sleep(3000);
                h.sendEmptyMessage(0);
            } catch (Exception e) {
                // TODO: handle exception
            }

        }
    }).start();

Handler h = new Handler() {

    @Override
    public void handleMessage(Message msg) {
        // TODO Auto-generated method stub
        super.handleMessage(msg);
        textView.setText(text);
    }

};

只需使用线程注册处理程序类,并在线程休眠3秒后在处理程序类中更新textview。

答案 2 :(得分:0)

试试这个:

Handler h=new Handler();
    Runnable runn=new Runnable() {

        @Override
        public void run() {
            // update text view here
            h.postDelayed(runn, 2000);
        }
    };


    private void startUpdating() {
        h.postDelayed(runn, 0);
    }