我们在主线程中创建的View对象,常常需要动态的被修改。
但是,只有创建它的线程(主线程能够修改它).
当需要在子线程中修改View对象的时候,就要用到消息处理机制。
子线程中发送Message对象,主线程中利用Handler来处理。
代码如下:
public class TestActivity extends Activity {
private TextView tv;
//1 .创建出来handler 要求必须在主线程里面创建
private Handler handler = new Handler(){
// 主线程处理消息 调用的方法
@Override
public void handleMessage(Message msg) {
int count = (Integer) msg.obj;
tv.setText("当前条目为 "+ count);
super.handleMessage(msg);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) this.findViewById(R.id.tv);
//每隔2秒钟更新一下 tv的内容
new Thread(){
@Override
public void run() {
for(int i = 0;i<100;i++){
/* tv.setText("当前为"+ i); 这样写报错*/
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message msg = new Message();
msg.obj = i;
handler.sendMessage(msg);
}
super.run();
}
}.start();
}
}