猿问

在运行到 android 中的下一条语句之前等待循环完成服务器调用

我有一个要求,其中有一个具有不同类型的动态表单,如获取编辑文本、上传图像等。


我面临的问题是在遍历所有情况时我必须将图像上传到服务器并在移动到下一个类型之前获取该 url。最后将表单数据发布到服务器。


我尝试将所有代码放入线程中:


        new Thread(new Runnable() {

          @Override

        public void run() {

           //Code below with for loop

        }

        }).start();

另外上传图片在 asnctask 中


   for (int fieldIndex = 0; fieldIndex < section.getFields().size(); fieldIndex++) {

    switch (field.getType()) {

                case ("TextField"):

                 //take data

                 break;

                case ("Number"):

                    //take data

                 break;

                   case ("image"):

                    // UPLOAD to server and get that url in Asynctask

                    break;

        } fieldIndex++;

    }

      // Once for loop done upload all data witb image url to server

但它不是等待图像 URL,而是迭代循环,如果它没有递增,则再次调用上传图像函数。


萧十郎
浏览 144回答 3
3回答

哆啦的时光机

您可以先从列表中找到图片并上传到服务器,上传成功后响应保存图片网址。然后使用 for 循环获取所有数据,并使用图像 url 将所有数据上传到服务器。

桃花长相依

使用 RXAndroid/RXKotlin,它是您用例的完美解决方案,因为任务相互依赖。

牛魔王的故事

由于您使用的是线程,因此可以延迟迭代,以便它可以在某种意义上等待:Thread.sleep("2000");或者您可以使用:&nbsp;SystemClock.sleep("2000");这是一个类似的功能,但忽略了 InterruptedException
随时随地看视频慕课网APP

相关分类

Java
我要回答