2017-06-19 151 views
-1

如何保持UI線程等待,直到我從AsyncTask獲取數據。 我試圖從服務器加載一些信息和圖像,並分別顯示到textview和imageview。但是UI線程在後臺線程完成任務之前訪問該字段。所以空值被檢索和應用程序崩潰。UI線程和AsyncTask同步

+0

setText&Image in overriden onPostExecute AsyncTask方法,它在UI線程中調用並在AsyncTask終止之後。 –

回答

0

在完成後臺任務後,您可以更新AsyncTask的onPostExecute中的UI。

對於崩潰,通過訪問UI線程上的字段=>您需要將此代碼也轉換爲onPostExecute方法。

所以所需的數據將可用,該字段將有一個值。 所以崩潰問題可以解決。

-1

如果您正在構建,基本上擦傷HTML源代碼的應用程序,然後您處理這個「串」,你所能做的就是

private class Scrapper extends AsyncTask<String, Void, Void> { 

@Override 
protected Void doInBackground(String... params) { 
    //Get the source here 
} 

然後在onCreate方法

Scrapper scrapper = new Scrapper(); 
String URLSource = scrapper.execute("url here").get(); 
//Additional code to manipulate the string 

然而通常不建議這樣做,因爲顯然它會將整個UI線程置於保持狀態,並且如果源很大,則會有很長的延遲。

+0

如果有人低估,他們是否介意解釋爲什麼? –