2 回答

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

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