你需要通过异步线程更新UI。Android里实现异步线程的方法太多了,例如AsyncTask,给个示例给你吧:
private AsyncTask
设置一个定时器Timer,然后设置一个任务,每隔几秒钟就切换一下TextView的显示的值.
系统有一个控件,叫做Chronometer已经是这样的效果了,就是计时器.
public class MainActivity extends Activity {
private TextView tv_display;
private boolean running = true;
private int count = 0;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
tv_display.setText("" + count++);
}
};
private Runnable r = new Runnable() {
@Override
public void run() {
while(running){
handler.sendEmptyMessage(0);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_display = (TextView) findViewById(R.id.textView);
new Thread(r).start();
}
@Override
protected void onStop() {
running = false;
super.onStop();
}
}
public class Demo extends Activity {
private TextView mTxt;
private Timer mTimer;
private TimerTask mTask;
private int mStauts=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTxt=(TextView) findViewById(R.id.mTxt);
init();
}
private void init(){
mTimer=new Timer();
mTask=new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
mStauts++;
Message msg=new Message();
msg.what=0x112;
handler.sendMessage(msg);
}
};
mTimer.schedule(mTask, 1000, 1000);
}
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg)
{
if (msg.what == 0x112)
{
mTxt.setText(""+mStauts);
}
}
};
}