如果将更新UI控件的代码写入到工作线程中便会报错,
例子如下:
Runnable socketRun = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
tv = (TextView) findViewById(R.id.tv);
Socket socket = null;
String message = et.getText().toString() + "\r\n";
try {
// 创建socket
socket = new Socket("192.168.1.34", 8080);
// 向服务器发送消息
PrintWriter out = new PrintWriter(new OutputStreamWriter(
socket.getOutputStream()), true);
out.println(message);
// 接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
msgs = br.readLine();
//下面是更新UI的代码,这样写是错误的
if (msgs != null) {
tv.setText(msgs);
} else {
tv.setText("数据错误!");
}
out.close();
br.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};