具有顺序执行的多个AsyncTasks

KBu*_*usc 2 android android-asynctask

我知道之前已经提出了类似的问题,但这些问题的解决方案对我来说不起作用.情况是我有一个对象数组,每个对象都被发送到asynctask上传到服务器.我需要单独发送每个对象,但列表中的每个对象使用相同的asynctask,因此在onPostExecute()中调用task.execute不是一个选项,因为这会导致它无限地调用自身.我尝试过这样的事情

for(each item in list){
    task.execute();
    while(task.getStatus() != android.os.AsyncTask.Status.FINISHED){
            //spin here and wait
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当这样做时它只是永远旋转而永远不会离开while循环.任何建议都非常感谢

mar*_*inj 6

来自AsyncTask文档:

从HONEYCOMB开始,任务在单个线程上执行,以避免由并行执行引起的常见应用程序错误.

所以如果你不是> = HONEYCOMB,那么可以切换到使用ExecutorService:

ExecutorService executor = Executors.newSingleThreadExecutor();
Run Code Online (Sandbox Code Playgroud)

  • 是的,我真的希望我知道这一点.我只是假设,因为异步任务启动一个新线程,每个新调用也会创建一个新线程. (3认同)