Android中AsyncTask如何使用现的问题
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章给大家介绍Android中AsyncTask如何使用现的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题描述这里我只写出AsyncTask的这些代码,讲述一下
千家信息网最后更新 2025年12月03日Android中AsyncTask如何使用现的问题
这篇文章给大家介绍Android中AsyncTask如何使用现的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
问题描述
这里我只写出AsyncTask的这些代码,讲述一下
@Overrideprotected 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;}@Overrideprotected void onPostExecute(String recvdata) {super.onPostExecute(recvdata);mnetinfocallback.onNetinfoCallBackOver(clientData.transName, recvdata);}
主程序界面的回调方法
上面代码中,Socket在正常情况下获取到数据后都可以直接调用下面的回调方法把数据传递回去,在后面测试过程中,我们把Socket的服务端关闭后,让其Socket的连接失败,照上图的话应该直接在回调函数中用Toast提示出返回的信息了。
结果我们在测试中发现,Socket连接失败后程序直接崩溃了,如下图
调试中我们打开了LogCat看了一下,上面写着onPostExecute的问题
然后我们加入断点进行跟踪,发现启用回调函数后并没有在主进程中进来,然后就崩溃了,这里我就直接在网上找找相关的资料后也没查出来什么东西,不过在一篇文章里看到了下图说
解决方法
按上面的理解,那我们把输出的参数做一个中间转换再试试,改后的代码为
@Overrideprotected 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;}@Overrideprotected 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安全错误
数据库的锁怎样保障安全
英特尔服务器散热器
我的世界服务器那里进
全国计算机三级数据库技术
轩禾网络技术服务
广州服务器主板维修
小学的网络安全课程
崇明区智能化软件开发制品价格
数据库关系和集合之间的联系
软件开发技术 变化
个人信用数据库的问题
网络安全事项报告制度
监控中心服务器网络关闭
网络安全四种要素
现在网吧用什么配置的服务器
vue附加数据库
三级网络技术蒙题
上海先进网络技术销售公司
数据库设模式
网络安全在线实验平台哪个好
在天津做软件开发待遇怎么样
徐汇区专业软件开发哪家便宜
平阴软件开发培训班
hp380g8服务器
网络安全的3a是什么
服务器显示屏
杭州应届生软件开发招聘
服务器需要装git吗
项目经理和软件开发员的关系
校园出去信息管理系统数据库
麦菲克网络安全防御套装