如果新建一个Thread,那么不能在这个Thread中直接更新UI,因为只有主线程才能更新UI。
解决的办法如下:
1, 在Activity中声明一个Handller变量,重写HandleMessage(Message msg)函数,在函数内更新UI
1 Handler handler= new Handler(){ 2 @Override 3 public void handleMessage(Message msg){ 4 TextView myTextView=(TextView )findViewById(R.id.MyTextView); 5 myTextView.setText("Button Pressed"); 6 } 7 };
2,在新建的Thread线程中,handler.sendEmptyMessage(0); 这样会回调 handler的handleMessage函数
Runnable runnable= new Runnable() { public void run() { long endTime=System.currentTimeMillis()+20*1000; while (System.currentTimeMillis()<endTime) { synchronized (this) { try { wait(endTime - System.currentTimeMillis()); } catch (Exception e) { } } handler.sendEmptyMessage(0); } } } ; Thread thread=new Thread(runnable); thread.start();