2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
問(wèn)題是該execute()方法在新線程中啟動(dòng)任務(wù)并異步執(zhí)行此操作。這意味著當(dāng) HTTP 請(qǐng)求發(fā)生時(shí),您的代碼onCreate會(huì)繼續(xù)運(yùn)行,并且您的if檢查會(huì)在請(qǐng)求完成之前進(jìn)行。
要解決此問(wèn)題,您必須等待請(qǐng)求完成并在那里執(zhí)行您的代碼。為此,AsyncTask您可以覆蓋onPostExecute在任務(wù)完成后在 UI 線程上運(yùn)行的內(nèi)容。
您的代碼將如下所示:
@Override
protected void onPostExecute(String channel_uri) {
if(channel_uri.isEmpty()){
Log.i("channel_text", "Empty");
}
}
這也應(yīng)該刪除對(duì) channel_uri 的類成員的使用。因?yàn)槟潜粋鬟f到onPostExecute

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
“onCreate”和“doInBackground”在不同的線程中運(yùn)行。所以這段代碼
if(channel_uri.isEmpty()){
Log.i("channel_text", "Empty");
}
在您收到 AsyncTask 中的響應(yīng)之前執(zhí)行。
這就是它被稱為 AsyncTask 的原因。當(dāng)您收到響應(yīng)時(shí),您需要在 doInBackground 中記錄 channel_uri。
添加回答
舉報(bào)