第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Android中帶有HTTPRequest的線程

Android中帶有HTTPRequest的線程

小唯快跑啊 2022-07-14 10:07:45
我需要我的 ArrayAdapter 將加載來自 HTTP 請(qǐng)求的數(shù)據(jù)。我的 onCreate 方法:private Spinner spiCities;private ArrayAdapter<String> citiesAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    new Thread() {        @Override        public void run() {            LoadCities lc = new LoadCities();            lc.execute();        }    }.start();}我在 Activity 中有一個(gè)內(nèi)部類:class LoadCities extends AsyncTask<Void, Void, String> {    @Override    protected String doInBackground(Void... voids) {        BufferedReader br = null;        try {            URL url = new URL("http://10.0.2.2/inter/api/loadCities.php");            HttpURLConnection con = (HttpURLConnection) url.openConnection();            if ( con.getResponseCode() != 200 ) {                throw new RuntimeException( "Error: " + con.getResponseMessage()  );            }            br = new BufferedReader( new InputStreamReader( con.getInputStream() ) );        } catch ( MalformedURLException e ) {            e.printStackTrace();        } catch ( IOException e ) {            e.printStackTrace();        }        if ( null == br ) {            return "[]";        }        else {            StringBuilder sb = new StringBuilder();            try {                String linha;                while ( (linha = br.readLine()) != null ) {                    sb.append( linha );                }            } catch (IOException e) {                e.printStackTrace();            }            return sb.toString();        }    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        s = s.substring(1);        s = s.substring(0, s.length()-1);        List<String> listCities = new ArrayList<>();        String s1;        for ( String aux : s.split(",") ) {            s1 = aux.substring(1);            s1 = s1.substring(0, s1.length()-1);            listaCidades.add(s1);        }
查看完整描述

1 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

你在 AsyncTask 中實(shí)例化了itiesAdapter,它在后臺(tái)運(yùn)行,也就是說,你永遠(yuǎn)不知道它什么時(shí)候開始運(yùn)行或結(jié)束。如果您嘗試在 Activity 中的其他任何地方訪問變量 cityAdapter,那么itiesAdapter 可能已經(jīng)實(shí)例化,也可能尚未實(shí)例化。因此,您可以在 onPostExecute 方法中執(zhí)行與 cityAdapter 相關(guān)的所有內(nèi)容,或者等待變量被實(shí)例化后再嘗試使用它。

如果您確實(shí)需要等待 onPostExecute 完成才能在您的 Activity 中執(zhí)行其他內(nèi)容,那么您應(yīng)該實(shí)現(xiàn)onProgressUpdate以通知用戶您的 Activity 正在加載某些內(nèi)容。

你根本不需要做一件事。您正在創(chuàng)建一個(gè)線程,然后在其中運(yùn)行 AsyncTask。這是完全沒有必要的,因?yàn)?AsyncTask 已經(jīng)為您創(chuàng)建了一個(gè)線程,這就是它存在的原因。所以,不要使用“new Thread()”。


查看完整回答
反對(duì) 回復(fù) 2022-07-14
  • 1 回答
  • 0 關(guān)注
  • 147 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)