繁体   English   中英

在另一个asynctask中运行Asynctask类

[英]Run Asynctask class inside another 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类。

现在我该怎么办,我应该在哪里调用第二个asynctask类?

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM