2012-05-08 47 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