這篇文章主要為大家展示了“Android如何解決子線程進度條不顯示的問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Android如何解決子線程進度條不顯示的問題”這篇文章吧。
成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元金寨做網(wǎng)站,已為上家服務,為金寨各地企業(yè)和個人服務,聯(lián)系電話:13518219792
不顯示進度條的代碼邏輯:
首先,新建了一個類,此類有一個內(nèi)部類,內(nèi)部類繼承Therad
類中有一個普通方法,普通方法執(zhí)行的時候調(diào)用此方法中的內(nèi)部類。
這時候,展示進度條。
進度條展示在普通方法中,那么實際展示的時間是在內(nèi)部類執(zhí)行完成后才展示,這樣當然是不行的··
進度條在子線程中展示則報錯,百度的方法試過都不行。怎么辦呢。
解決方案:
在類中建立一個普通的方法,
方法里直接new出子線程然后start
子線程中通過handler消息機制將耗時操作的數(shù)據(jù)結(jié)果返回給handler
handler接收到消息后作出對應的處理。
handler是可以直接跳轉(zhuǎn)activity的。這點比較重要。
部分代碼展示:
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,"驗證失敗,請重新登陸",Toast.LENGTH_LONG).show();
SqliteDao sqliteDao = new SqliteDao(context);
sqliteDao.deletebbusinessdocumentlogin();
}else {
Toast.makeText(context, "驗證成功", Toast.LENGTH_LONG).show();
Intent intent = new Intent(context, ordergoods.class);
context.startActivity(intent);
}
}
}
};
子線程返回結(jié)果集發(fā)送給handler的代碼:
handler.obtainMessage(0,returndata).sendToTarget();
以上是“Android如何解決子線程進度條不顯示的問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!