背景的Android的AsyncTask得到()形成另一個的AsyncTask()
我有一個的AsyncTask(稱之爲uploadHeader
)一些數據上傳到服務器。
我有上傳一些相關的數據的第二的AsyncTask(uploadDetail
),這需要初始數據已被上傳:頭載返回由服務器發出的ID,其用於更新本地詳情記錄,之前他們上傳。
如果當時uploadHeader
最初被稱爲有連接問題時,頭信息將不會被上傳。 所以在uploadDetail.doInBackground()
開始我檢查本地首部記錄的狀態,看它是否已經成功上傳到服務器,如果沒有,調用uploadHeader.get()
上傳的頭和等待的將ID後面,在我上傳詳細記錄。
問題
這似乎只是在get()方法調用掛起。調試它,它似乎在創建一個FutureTask
,然後在那裏循環。看起來好像第二個AsyncTask在第一個AsyncTask完成後正在排隊運行,這是因爲它在等待第二個AsyncTask。
我讀過關於呼籲從另一個的AsyncTask一些其他職位/文章,但他們似乎都集中於得到兩個並行運行。我想阻止它,直到其他任務結束。還有人提到「必須在UI線程上調用」(Params ...)「,沒有一篇文章提到get()。或者get()與execute()基本相同,以等待結果?
作爲一種變通方法,我可以把HTTP調用上傳的頭在一個單獨的類並調用來自uploadHeader
和uploadDetail
,所以uploadDetail
不會需要創建一個uploadHeader
任務。 我只想了解它爲什麼不能正常工作。
如果一個AsyncTask必須等待另一個......爲什麼不把兩個上傳都放在一個AsyncTask中??? – Merlevede