6

所以,我正在开发一个条形码解码器,一旦我们有了条形码,它就会通过互联网进入多个 API 来解码刚刚扫描的内容。问题是我必须将一些 XML 解析链接在一起,我不知道我是否做得对。

因此,一旦扫描了条形码,我的程序就会调用一个 ASyncTask,它会通过 API 检索产品名称。一旦有了名称,我希望它调用另一个 ASyncTask。我知道这可以通过在另一个中实例化一个 ASyncTaks 来实现onPostExecute(),但是我认为这是错误的,因为它就像盒子中的盒子。那么在我的主 Activity 中实例化我的第二个 ASyncTask 并让它等到我的第一个 ASyncTask 完成是不是可能/更好?

(英语不是我的主要语言,我希望我说清楚了)。

4

3 回答 3

17

我认为AsyncTaskonPostExecute第一个 AsyncTask 中开始第二个是绝对合法的,混合这两个操作是一个糟糕的逻辑想法,正如“The Offspring”所说 - “你必须让他们分开”

如果您不希望它直接在onPostExecute自身内部,请设置一个处理程序以在活动中执行它并从onPostExecute.

最后一件事——如果你有很多逻辑——把它移到一个单独的文件中,不要把它们都放在同一个文件中。

于 2012-05-08T11:59:37.717 回答
1

在这种情况下,最好将长时间运行的操作一起批处理到一个 AsyncTask 中。

另一种选择是使用 Loaders API,这使得链接任务更容易http://developer.android.com/guide/topics/fundamentals/loaders.html

于 2012-05-08T11:54:37.843 回答
0

如果您经常面临这样的情况,您可以采用另一种方法。也就是说,将请求和操作合并到 runnables/callables 中,并在例如队列中分别管理它们。这是一个不错的方法。 http://ugiagonzalez.com/2012/07/02/theres-life-after-asynctasks-in-android/

于 2012-07-02T23:08:41.337 回答