溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android如何解決子線程進(jìn)度條不顯示的問題

發(fā)布時間:2021-10-18 14:58:30 來源:億速云 閱讀:130 作者:小新 欄目:移動開發(fā)

這篇文章主要為大家展示了“Android如何解決子線程進(jìn)度條不顯示的問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Android如何解決子線程進(jìn)度條不顯示的問題”這篇文章吧。

不顯示進(jìn)度條的代碼邏輯:

首先,新建了一個類,此類有一個內(nèi)部類,內(nèi)部類繼承Therad

類中有一個普通方法,普通方法執(zhí)行的時候調(diào)用此方法中的內(nèi)部類。

這時候,展示進(jìn)度條。

進(jìn)度條展示在普通方法中,那么實(shí)際展示的時間是在內(nèi)部類執(zhí)行完成后才展示,這樣當(dāng)然是不行的··

進(jìn)度條在子線程中展示則報錯,百度的方法試過都不行。怎么辦呢。

解決方案:

在類中建立一個普通的方法,

方法里直接new出子線程然后start

子線程中通過handler消息機(jī)制將耗時操作的數(shù)據(jù)結(jié)果返回給handler

handler接收到消息后作出對應(yīng)的處理。

handler是可以直接跳轉(zhuǎn)activity的。這點(diǎn)比較重要。

部分代碼展示:

handler代碼:

Handler handler = new Handler(){

    @Override

    public void handleMessage(Message msg) {

        super.handleMessage(msg);

        if(msg.what==0){

            pb.dismiss();

            String data = (String) msg.obj;

            if(data.equals("0")){

             Toast.makeText(context,"驗(yàn)證失敗,請重新登陸",Toast.LENGTH_LONG).show();

                SqliteDao sqliteDao  = new SqliteDao(context);

                sqliteDao.deletebbusinessdocumentlogin();

            }else {

                Toast.makeText(context, "驗(yàn)證成功", Toast.LENGTH_LONG).show();

                Intent intent = new Intent(context, ordergoods.class);

                context.startActivity(intent);

            }

        }

    }

};

子線程返回結(jié)果集發(fā)送給handler的代碼:

handler.obtainMessage(0,returndata).sendToTarget();

以上是“Android如何解決子線程進(jìn)度條不顯示的問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI