关于Android socket失败问题和UI更新
来源:互联网 发布:js字符串比较相等 编辑:程序博客网 时间:2024/06/05 17:35
安卓4.0后不准在主线程(UI线程)上创建网络连接,
所以所以我们需要创建一个新的线程,把任务交给新线程处理,
但新线程不能操作UI,
我么可以用handler方法来解决UI的更新问题:
下面是是我百度地图连接服务器跟新UI的例子
Handler handler = new Handler() {
public void handleMessage(Message msg) {
// 要做的事情
updateInfo();
super.handleMessage(msg);
}
};
public void updateInfo() {
try {
System.out.println("Client:Connecting");
//IP地址和端口号(对应服务端),
Socket socket = new Socket("123.207.33.123", 1234);
//发送给服务端的消息
String message = "GET\n";
try {
System.out.println("Client Sending: '" + message );
//第二个参数为True则为自动flush
PrintWriter out = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())), true);
// 开始发送信息
out.println(message);
//in为服务器返回的信息
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//测试从服务器上是否能实时得到数据
TextView TextView2=(TextView)findViewById(R.id.textView2);
String env_info =in.readLine();
TextView2.setText(env_info);
socket.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public class MyThread implements Runnable {
@Override
public void run() {
while (true) {
try {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);// 发送消息 跟新UI
Thread.sleep(3000);// 线程暂停3秒,单位毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
MapView.setMapCustomEnable(true);
super.onCreate(savedInstanceState);
//开启线程
new Thread(new MyThread()).start();
}
- 关于Android socket失败问题和UI更新
- android 关于更新UI的问题
- android关于UI界面更新的问题
- Android UI更新问题
- 关于Android ListItem动态更改item UI不更新问题
- 关于Android子线程不能更新UI的问题
- 关于Android SDK 下载和更新失败解决办法
- 关于Android SDK下载和更新失败的解决方法
- android sdk 更新失败问题
- 解决 Android SDK无法下载和更新失败的问题
- 解决 Android SDK下载和更新失败问题
- 解决 Android SDK下载和更新失败的问题
- 关于创建socket失败的问题
- 关于eclipse更新SDK失败问题处理
- 关于eclipse更新SDK失败问题处理
- 关于listView ui更新的问题
- Android关于线程更新UI的方法
- Android关于线程更新UI的方法
- LinkedBlockingQueue源码分析
- Using REP with CMPS
- Qt 5的学习--与Qt 4的几点区别
- lamp下搭建WordPress博客系统
- django学习
- 关于Android socket失败问题和UI更新
- Mysql
- 20170725——按键输入实验
- Chapter05 高阶MapReduce(一) 链接MapReduce作业
- 备份与恢复
- Linux--守护进程,为什么要fork两次
- 【Java并发编程】内存一致性错误
- Python字符串常用函数
- 125. Valid Palindrome