由于在Android中,主线程不能阻塞,子线程不能直接动态修改UI控件。
所以想要实现主线程动态更新UI,就需要Handler的配合。以下是一个简单的计时器例子,如果有什么不对或做得不好的,请多多指点
MainActivity.java文件如下:
package justrush.com.test3;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
TextView text;
Handler handler;
private boolean ifStop=true;
private int count;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView)findViewById(R.id.time);
handler=new Handler(){
//重写handleMessage方法获得子线程传来的数据
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
text.setText(String.valueOf(msg.arg1));
}
};
new Thread(new Runnable() {
@Override
public void run() {
count=0;
while(ifStop){
count++;
Message msg=new Message();
msg.arg1=count;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
XML文件就不放上来了,Layout中只有一个TextView控件,ID为time