千家信息网

Android中AsyncTask如何使用现的问题

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家介绍Android中AsyncTask如何使用现的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题描述这里我只写出AsyncTask的这些代码,讲述一下
千家信息网最后更新 2026年11月03日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安全错误 数据库的锁怎样保障安全 中关村互联网科技集团 科技股互联网 互联网金融 科技金融 互联网科技视频 成都互联网科技公司 猫创互联网科技 郑州华宇互联网科技 成都仁贤领冠互联网科技有限公司 互联网实体化科技化 宁波青枫互联网科技有限公司 福州新华互联网科技学校 知乎 互联网科技寓意 玉溪互联网科技怎么选 哈尔滨屹滨互联网科技有限公司 开一家科技互联网公司需要多少钱 民营互联网公司国防科技 互联网科技公司营业执照怎么办理 科技互联网海报 上海同邻互联网科技有限公司规模 西安左小互联网科技有限公司 互联网金融 科技创新 科技互联网创业计划书 互联网养老 桔豆科技 须眉科技是互联网公司吗 速维有品互联网信息科技(苏州)有限公司 互联网保险科技创业 互联网科技公司营业执照怎么办理 互联网企业科技类企业如何做账 九思连强互联网电子科技有限公司 中国新注册互联网科技
0