我的情況是這樣的:首先 叫我取它從數據庫所需項目第一的AsyncTask。之後,我調用另一個AsyncTask來獲取這些Item圖像。從一個類中的多個AsyncTask獲取數據?
我從AsynTasks使用回調獲取數據。
這裏是問題 - 因爲我使用的回調,在我的課我有方法processFinish
當它完成它的計算返回的AsyncTask數據。問題在於兩個彼此依賴的異步任務。我現在應該怎麼做?
我的情況是這樣的:首先 叫我取它從數據庫所需項目第一的AsyncTask。之後,我調用另一個AsyncTask來獲取這些Item圖像。從一個類中的多個AsyncTask獲取數據?
我從AsynTasks使用回調獲取數據。
這裏是問題 - 因爲我使用的回調,在我的課我有方法processFinish
當它完成它的計算返回的AsyncTask數據。問題在於兩個彼此依賴的異步任務。我現在應該怎麼做?
可以使用的AsyncTask的get()方法,將等待輸出,並不會進行進一步 你也可以用一個超時使用它。
前new BackgroundTask().execute.get();
或
new BackgroundTask.execute.get(long timeout);
您可以執行裏面一個又一個的AsyncTask,但由於這種方法在UI線程上運行,你應該這樣做內onPostExecute()。
@Override
protected void onPostExecute(Void args) {
new AsyncTask2.execute(..); // Start second task once you've got first results
}
在第二個AsyncTask完成後,您只需調用一次方法processFinish(..)
一次。
反正有你爲什麼用兩個AsyncTasks理由嗎?根據您的解釋,我們可以相信您可能只能使用一項任務。
正如我所提到的,這個方法不推薦使用,因爲.get鎖定UI。 – WheelPot