Android中AsyncTask如何使用现的问题
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章给大家介绍Android中AsyncTask如何使用现的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题描述这里我只写出AsyncTask的这些代码,讲述一下
千家信息网最后更新 2025年02月05日Android中AsyncTask如何使用现的问题
这篇文章给大家介绍Android中AsyncTask如何使用现的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
问题描述
这里我只写出AsyncTask的这些代码,讲述一下
@Override
protected String doInBackground(String... strings) {
String tranname=strings[0];
String transdata=strings[1];
String recvData="";
try {
//连接SOCKET客户端
socketinfo=dataTransSocket.SocketConnect(msyscfg);
if (socketinfo.retno != -1) {
clientData=new CSocketClientData();
clientData.transName=tranname;
clientData.data=transdata;
//获取数据
recvData=dataTransSocket.SocketSenduntilRecvStr(clientData);
dataTransSocket.SocketDisconnect();
} else {
recvData=socketinfo.retmsg;
}
} catch (Exception e) {
e.printStackTrace();
Log.i("socket", e.getMessage());
recvData=e.getMessage();
}
return recvData;
}
@Override
protected void onPostExecute(String recvdata) {
super.onPostExecute(recvdata);
mnetinfocallback.onNetinfoCallBackOver(clientData.transName, recvdata);
}
主程序界面的回调方法
上面代码中,Socket在正常情况下获取到数据后都可以直接调用下面的回调方法把数据传递回去,在后面测试过程中,我们把Socket的服务端关闭后,让其Socket的连接失败,照上图的话应该直接在回调函数中用Toast提示出返回的信息了。
结果我们在测试中发现,Socket连接失败后程序直接崩溃了,如下图
调试中我们打开了LogCat看了一下,上面写着onPostExecute的问题
然后我们加入断点进行跟踪,发现启用回调函数后并没有在主进程中进来,然后就崩溃了,这里我就直接在网上找找相关的资料后也没查出来什么东西,不过在一篇文章里看到了下图说
解决方法
按上面的理解,那我们把输出的参数做一个中间转换再试试,改后的代码为
@Override
protected String doInBackground(String... strings) {
String tranname=strings[0];
String transdata=strings[1];
String recvData="";
try {
//连接SOCKET客户端
socketinfo=dataTransSocket.SocketConnect(msyscfg);
if (socketinfo.retno != -1) {
clientData=new CSocketClientData();
clientData.transName=tranname;
clientData.data=transdata;
//获取数据
recvData=dataTransSocket.SocketSenduntilRecvStr(clientData);
recvData=mnetinfocallback.Success + "|" + recvData;
dataTransSocket.SocketDisconnect();
} else {
recvData=mnetinfocallback.Fail + "|" + socketinfo.retmsg;
}
} catch (Exception e) {
e.printStackTrace();
Log.i("socket", e.getMessage());
recvData=mnetinfocallback.Fail + "|" + e.getMessage();
}
return recvData;
}
@Override
protected void onPostExecute(String recvdata) {
super.onPostExecute(recvdata);
String[] strings=recvdata.split("\\|");
if (strings[0].equals(mnetinfocallback.Success)) {
if (!strings[1].equals("")) {
Log.i("post", strings[1]);
mnetinfocallback.onNetinfoCallBackOver(clientData.transName, strings[1]);
}
} else {
mnetinfocallback.onNetinfoCallBackOver(mnetinfocallback.Fail, strings[1]);
}
}
我们重新运行后,发现正常弹出问题了
关于Android中AsyncTask如何使用现的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
问题
数据
代码
方法
内容
函数
客户
客户端
更多
篇文章
面的
帮助
测试
不错
上图
下图
东西
中用
主程序
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
济南oa软件开发服务费
搜贷天下网络技术
国家对网络安全的服务体系
样设计图软件开发
如何查询自己电脑数据库是否安装
深圳金蝶财务软件开发
amd8380服务器型号
贵州管理系统软件开发商
饿了吗软件开发
软件开发社区运营
韩城app软件开发制作
广州邮先生网络技术
迪哥的服务器咋开
数据库设计说明书
我的世界混乱服务器网易版推荐
网络安全域的基本概念
c post服务器
手机搭建服务器的软件
关系模型的数据库操作主要包括
山东工业网络技术专业
集群设备分发服务器
在哪里创建数据库
amd8380服务器型号
Oracle数据库关闭
制作小程序服务器域名
常用的电子图书数据库
网络安全巡检通报
pdf不显示数据库
软件开发环境保护措施
处理网络安全事件赢得认可