在另一个asynctask中运行Asynctask类

时间:2013-07-04 05:11:13

标签: android android-asynctask

我有一个类,我有一个内部asynctask类,它执行json解析。我已经调用了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类。

现在该怎么做&amp;我应该在哪里调用第二个asynctask类?

1 个答案:

答案 0 :(得分:3)

您应该在此单AsyncTask中运行所有运行日志记录任务。这样做非常好,因为它已经为你提供了一个后台线程来处理所有的事情。

只需在主doInBackGround方法中执行所有http处理。

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

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

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

时更新列表
  • 后台处理已完成(onPostExecute
  • 后台处理仍在进行中(onProgressUpdate

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

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