0

我有一个类,其中我有一个执行 json 解析的内部 asynctask 类。我已经调用了该 asynctask 类并成功完成了解析并显示在列表视图中。现在基于该列表视图中的 ID(产品 ID),我必须在与该产品对应的相同列表视图中显示图像。为此,必须触发另一个 url 并进行解析。所以我已经将所有产品 ID 存储在一个数组列表中,并以此为基础

for(int z=0;z<Prdtspcl_pid.size();z++){
    String s=Prdtspcl_pid.get(z).toString();
    String spclurl=url to be fired+s;   
    MySpclMethod msm2= new MySpclMethod(spclurl);
    msm2.execute();

}

prdt_pid我的 product_id在哪里,MySpclMethod是另一个用于图像解析的内部异步任务类。

现在我应该做什么以及我应该在哪里调用第二个 asynctask 类?

4

1 回答 1

3

您应该在这个单一的AsyncTask. 这样做非常好,因为它已经为您提供了一个后台线程来处理您的所有处理。

只需在主 doInBackGround 方法中进行所有 http 处理即可。

每当你想更新 UI 时,你都有 2 个钩子:

  • onPostExecute:当 doInBackground 完成时会调用它。将后台处理完成后您希望在 UI 上执行的所有逻辑放在此处。
  • onProgressUpdate:每当您publishProgressdoInBackground方法内调用时,都会调用它。每当您想要在后台处理仍在进行时更新 UI 时执行此操作。它允许您显示中间进度。这将导致 AsyncTasksonProgressUpdate被自动调用,您可以在其中更新您的 UI。

如果用于支持您的 ListView 的适配器是活动类的成员变量,那么您可以从 onPostExecute 和 onProgressUpdate 引用它,这意味着您可以在以下情况下更新您的列表

  • 后台处理已完成 ( onPostExecute)
  • 当后台处理仍在进行时 ( onProgressUpdate)

此处显示了一个示例:http: //developer.android.com/reference/android/os/AsyncTask.html

不支持嵌套AsynTasks(并且永远无法工作)。

于 2013-07-04T05:13:47.077 回答