如何在上一个进程完成后在循环内运行进程? Java的

时间:2017-09-08 09:35:04

标签: java android android-asynctask

长话短说,我想使用Retrofit 2将多个图像上传到我的服务器。我想根据List图像的大小循环发送单个图像的过程,但是异步,所以第二次上传仅在首次上传时运行成功了。有些人告诉我,我应该将一个文件数组发送到我的服务器并在那里解析数组,但我想知道在客户端上传时是否有错误。这样,如果第一次循环出现错误(网络问题),第二次循环将停止运行。

我真的不清楚如何完成上述任务,但这是一个开始。

public class UploadAllImages extends AsyncTask<Void, Void ,Void>{
    @Override
    protected Void doInBackground(Void... params) {
        doSingleUpload(image);
        return;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        if(upload == succeeded){
          new UploadAllImage().execute();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我可能会这样解决:

public class UploadImages extends AsyncTask<Image, Integer, Boolean> {

    @Override
    protected Boolean doInBackground(Image... images) {
        List<Image> remainingImages = new ArrayList<>(Arrays.asList(images));

        while (!remainingImages.isEmpty()) {
            boolean success = doSingleUpload(remainingImages.remove(0));
            if (!success) {
                return false;
            }
        }

        return true;
    }

    @Override
    protected void onPostExecute(Boolean success) {
        // Handle the result of all uploads
    }
}