2016-03-15 81 views
3

我注意到在AsyncTask here的文檔中,您可以使用名爲get()的方法在線程工作完成後檢索結果。該文件說它使用AsyncTask.get()和onPostExecute()之間的區別

等待如果必要的計算完成,然後檢索其結果。

這是否意味着,如果我有這行代碼:

List<Data> data = someAsyncTask.execute.get(); 
在主UI線程

,它等待後,在執行任何代碼之前完成的任務?如果是這樣,這將使得AsyncTask的使用毫無用處。我在這裏錯過了什麼?

AsyntTask.get()使用onPostExecute()將數據返回到主線程的方法嗎?如果是這樣,它安全嗎?或者它用於完全不同的東西?

+0

不,你是正確的,使用'GET'呈現一個異步任務沒用 – tyczj

回答

2

如果調用AsyncTask.get(),任務還沒有完成,那麼當前線程將等待(並且可以被打斷)。

您的權利,呼籲在UI線程這種方法使的AsyncTask沒用。但是你可以在另一個需要執行此任務的線程中調用它。

+0

哦,我明白了,我沒想到用它嵌套線程,然後使它有用裏面的。 –