package cn.itcast.test;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class TestActivity extends Activity {
private TextView tv;
//只有主线程才可以更新界面. 防止多个线程干扰界面更新.
//子线程把消息发送给主线程,才可以让主线程更新ui.
//android的消息机制.
//所有与界面相关的操作都在主线程中.
//java程序执行是从main方法开始执行的.
//android执行main方法是由是有框架执行的.之后读取我们的清单配置文件.
//找到要激活的demoactivity. new出demoactivity.之后oncreat方法.
//主线程,oncreat方法是主线程.只要不是new thread子线程就行.
//1 .创建出来handler 要求必须在主线程里面
private Handler handler = new Handler(){
// 主线程处理消息 调用的方法
@Override
public void handleMessage(Message msg) {
//在这里操作更新界面的工作.
//将msg里面的信息视为count.
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的参数.
msg.obj = i;
//发送消息到消息队列.
handler.sendMessage(msg);
}
super.run();
}
}.start();
}
}