Android:定期从线程更新UI

时间:2012-04-04 12:43:00

标签: android

猜猜我有一个TextView我想在某些情况下更新它。我希望有一个线程,每隔一两秒检查一下情况,并在必要时更新TextView的文本。 有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我这样做:

public class MyClass {
  private Handler  hUpdate;
  private Runnable rUpdate;

  public MyClass() { // Constructor
    hUpdate = new Handler();
    rUpdate = new Runnable() {
      // Do your GUI updates here
    };

    Thread tUpdate = new Thread() {
      public void run() {
        while(true) {
          hUpdate.post(rUpdate);
          sleep(500);
        }
      }
    }
    tUpdate.start();
  }
}

答案 1 :(得分:2)

您可以在GUI中使用Handler:

Handler hnd = new Handler() {
    public void handleMessage(Message msg) {
        if ( msg.what == 101 ) {
           //update textview
        }
    }
}

将hnd传递给你的线程,并在你的线程中执行:

Message m = new Message();
m.what = 101;
hnd.sendMessage(m);

这假设在你的单独线程中你正在做一些需要向GUI线程报告的工作,你也可以发送短信

答案 2 :(得分:1)

您必须使用处理程序来更新另一个线程的视图。使用postDelayed,您可以设置延迟。见文档:

handler.postDelayed