读书人

android thread跟handle通信

发布时间: 2013-08-01 15:23:18 作者: rapoo

android thread和handle通信 ?
我要实现,按下按钮后产生一个线程,然后线程 吧消息传给 handle ,在handle中设置textview的显示内容,但是我发现,我的不能设置 textview的显示内容,不知道哪里错了,求教~~我的代码很简单,我觉得应该没有是问题的:


package com.FJICC.lzm;
import .....
public class tcp_server extends Activity{

private Button serverStart_btn;
private Button serverStop_btn;
private TextView receivedata_tv;
private Button setport_btn;
private EditText senddata_et;
private Button send_btn;
public int PORT = 8080;
public Handler mHandler;
protected static final int GUINOTIFIER = 0x1234;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tcpserver_main);

serverStart_btn=(Button)findViewById(R.id.btnStart);
serverStop_btn=(Button)findViewById(R.id.btnStop);
setport_btn=(Button)findViewById(R.id.btnSet);
send_btn=(Button)findViewById(R.id.btnSend);

senddata_et=(EditText)findViewById(R.id.et_send);
receivedata_tv=(TextView)findViewById(R.id.tv_receive);

serverStart_btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
serverStart_btn.setEnabled(false);
setport_btn.setEnabled(false);
serverStop_btn.setEnabled(true);
new Thread()
{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
Message m = new Message();
m.what = tcp_server.GUINOTIFIER;
tcp_server.this.mHandler.sendMessage(m);
}catch(IOException e){
e.printStackTrace();
}
}
}.start();
}
});

mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case tcp_server.GUINOTIFIER:


tcp_server.this.receivedata_tv.setText("xxxxxxx");
break;
}
super.handleMessage(msg);
}
};
}

}



[解决办法]


不是:在线程里面不能处理太复杂的事情。
而是网络收发线程里面不要处理太复杂的事情,网络收发线程只做数据收发。数据的处理用其他线程去做。

读书人网 >Android

热点推荐