0

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

4

3 回答 3

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();
  }
}
于 2013-02-03T01:50:15.037 回答
3

您可以在 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 线程报告的工作,您还可以发送短信

于 2012-04-04T12:50:05.600 回答
1

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

handler.postDelayed

于 2012-04-04T12:46:19.367 回答