android socket 失败,安卓Socket发起失败 急

本文介绍如何在Android 4.0及以上版本中避免主线程进行网络操作,推荐使用新线程结合Handler处理网络请求,并提到了使用AsyncTask和自定义Handler的方法。实例展示了如何创建新线程、处理数据回调和更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安卓4.0后不准在主线程(UI线程)上创建网络连接,所以你可以new Thread一下,把任务交给新线程处理,但新线程不能操作UI,所以如果你要更新UI,可以使用android.os.Handler来做。

举个例子如下:

android.os.Handler handler=new android.os.Handler(){

@Override

public void handleMessage(Message msg){

if(msg.what==0x567){

Bundle data=msg.getData();

//主线程要做的其他事

}else{

super.handleMessage(msg);

}

}

};

//开新线程

new Thread() {

@Override

public void run(){

Socket socket_s=null;

System.out.println("==== 新的TCP请求发起 ====");

try{

System.out.println("== 进入try ==");

socket_s=new Socket(SERVER_IP,SERVER_PORT);

OutputStream outputStream=socket_s.getOutputStream();

System.out.println("== Socket成功挂起 ==");

...

//数据回调给handler处理

android.os.Message message= new android.os.Message();

message.what=0x567;

if(strResult!=null){

android.os.Bundle data=new android.os.Bundle();

//随便发送

data.putString("abc","要发送的数据");

message.setData(data);

}

handler.sendMessage(message);

}catch{...}

}.start();

你也可以用AsyncTask来做,它有一个自己维护的内部线程池,还有可供主线程用的回调方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值