2012-05-08 45 views
6

因此,我正在研究條形碼解碼器,一旦我們擁有條形碼,就會通過互聯網將多個API解碼以解碼剛纔掃描的內容。 問題是我必須將一些XML解析鏈接在一起,並且我不知道我是否正確地做了這件事。AsyncTask內部的AsyncTask

所以,一旦掃描了條碼,我的程序就會調用一個ASyncTask,通過API檢索產品名稱。一旦它有了名字,我希望它調用另一個ASyncTask。我知道通過在另一個的onPostExecute()中實例化一個ASyncTaks是可能的,但是,我認爲這是錯誤的,因爲它就像盒子內的盒子。 因此,在我的主Activity中實例化我的第二個ASyncTask是不是可能/更好,並且讓它等到我的第一個ASyncTask完成?

(英語不是我的主要語言,我希望我自己清楚)。

+3

使用2個任務的理由是什麼?爲什麼不在第一個任務doInBackground中做你想做的事? – Renard

+2

我們不應該取笑一個人的語言(英語),因爲它可能不是他/她的主要語言 – waqaslam

+0

@Renard讓doInBackground中的所有內容看起來太雜亂了。我的第一個ASyncTask可以返回首先需要處理的不同結果,然後根據結果做更多​​的解析。所以啓動其他ASyncTask允許我將代碼分成多方,並使其更加清晰。 – MagicMicky

回答

17

我認爲這是絕對合法的,開始在第一的AsyncTask的onPostExecute第二AsyncTask,混合這兩種操作是一個糟糕的邏輯思路,作爲「子孫」說 - 「你得陪他們分開」

如果你不希望它是直接在onPostExecute自身內部,設置處理程序的活動,並調用執行它這個處理器從onPostExecute

而最後一件事 - 如果你有很多邏輯 - 將它移動到一個單獨的文件,不要把它全部保存在同一個文件中。

+0

好吧,我將嘗試在我的活動中設置一個處理程序,並從'onPostExecute()'調用它。 是的,我得到了多個文件,甚至多個包。這是我第一個真正的Android項目,我希望它儘可能地乾淨! – MagicMicky

+0

- 祝你好運。 :) – MByD