Hander,多线程传递数据


   //线程传递数据     子线程将数据放在 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出错了");
}

}



}

}








  

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页