//线程传递数据 子线程将数据放在 hander中,然后用 hander的sendMsg方法发到 主线程的handleMessage中
子线程 -------> hander---------->主线程 ------->刷新数据
private EditText edt; //一个文本框
private Button btn; //一个按钮
private Handler myHeadle; //一个hander
//主线程中生成hander 并在此接受数据 (回调函数)
myHeadle = new Handler(){
public void handleMessage(android.os.Message msg) {
edt.setText((String)msg.obj);
super.handleMessage(msg);
};
};
btn = (Button) findViewById(R.id.handle);
edt = (EditText) findViewById(R.id.edt_hander);
//给按钮绑定点击事件 让其启动子线程
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new myThread().start();
}
});
}
//子线程
public class myThread extends Thread{
@Override
public void run() {
super.run();
int sum =0;
for (int i = 0; i <100; i++) {
sum +=i;
//得到hander的msg对象,并将数据加到msg的obj中 ,将数据发出
Message msg = myHeadle.obtainMessage();
msg.obj = "求和为"+sum;
myHeadle.sendMessage(msg);
//System.out.println("和是"+sum);
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("sllep4出错了");
}
}
}
}