真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

這篇文章給大家介紹Android中AsyncTask如何使用現(xiàn)的問(wèn)題,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)公司專注于行唐企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。行唐網(wǎng)站建設(shè)公司,為行唐等地區(qū)提供建站服務(wù)。全流程按需定制開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

問(wèn)題描述

這里我只寫(xiě)出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;                //獲取數(shù)據(jù)                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);
   }

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

主程序界面的回調(diào)方法

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

上面代碼中,Socket在正常情況下獲取到數(shù)據(jù)后都可以直接調(diào)用下面的回調(diào)方法把數(shù)據(jù)傳遞回去,在后面測(cè)試過(guò)程中,我們把Socket的服務(wù)端關(guān)閉后,讓其Socket的連接失敗,照上圖的話應(yīng)該直接在回調(diào)函數(shù)中用Toast提示出返回的信息了。

結(jié)果我們?cè)跍y(cè)試中發(fā)現(xiàn),Socket連接失敗后程序直接崩潰了,如下圖

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

調(diào)試中我們打開(kāi)了LogCat看了一下,上面寫(xiě)著onPostExecute的問(wèn)題

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

然后我們加入斷點(diǎn)進(jìn)行跟蹤,發(fā)現(xiàn)啟用回調(diào)函數(shù)后并沒(méi)有在主進(jìn)程中進(jìn)來(lái),然后就崩潰了,這里我就直接在網(wǎng)上找找相關(guān)的資料后也沒(méi)查出來(lái)什么東西,不過(guò)在一篇文章里看到了下圖說(shuō)

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

解決方法

按上面的理解,那我們把輸出的參數(shù)做一個(gè)中間轉(zhuǎn)換再試試,改后的代碼為

    @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;                //獲取數(shù)據(jù)                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]);        }    }

我們重新運(yùn)行后,發(fā)現(xiàn)正常彈出問(wèn)題了

Android中AsyncTask如何使用現(xiàn)的問(wèn)題

關(guān)于Android中AsyncTask如何使用現(xiàn)的問(wèn)題就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


文章標(biāo)題:Android中AsyncTask如何使用現(xiàn)的問(wèn)題
本文地址:http://weahome.cn/article/jppssc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部