截击请求延迟? - Android排球

时间:2018-02-09 14:28:01

标签: android android-volley

method1();
method2();
if(result1 && result2)
{
        method3();
}

假设method1()仅验证文本框是否已填充且不为空,并且method2()验证文本框的值是否在数据库中有重复项。

result1 and result2是类布尔变量,

如果文本框已填充,则

result1将为true;如果值没有重复,则result2将为true,因此method2具有齐射请求。

method3()是一个将有值插入表格的截击请求的过程。

我认为会发生的是:

  1. method1()将执行,result1将为真或假,具体取决于结果

  2. method2()将执行,此方法中包含的排球流程将影响result2result2将为真或假,具体取决于结果

  3. resul1result2将在if声明中进行测试,如果它们都是true并且将继续method3()
  4. 而不是那个,method2中的截击请求需要时间或延迟发生,代码会进入ifresult1的{​​{1}}语句检查之前result2的截击请求响应。

    这意味着即使整个表单有效,由于这种情况发生method2()result2语句检查期间始终为false。

    这是我观察到的。

    所以现在我所做的是if将在method3()中的截击请求的onResponse块上执行,method2()将在{{1}的末尾执行}}

    但是对我来说感觉很烦,而且我对此感到不舒服,按下按钮后发生的所有事情的延迟让我感到不舒服,因为它太长了。

    我只是一名大学生,我刚刚学会了机器人和凌空,我不知道如何做得更好,或者如果有其他选择,请帮助我。如果我的解释听起来很愚蠢,我也很抱歉。无论如何,我可以改进这个过程,请告诉我。非常感谢。

1 个答案:

答案 0 :(得分:0)

在Volley中发生这种情况的原因是请求是异步进行的,执行您收到响应后提供的回调。它不会阻止执行。

要与Volley一起做你想做的事,你可以将请求链接在一起。这意味着您只需在method2的回调中执行method1,并在method2的回调中执行if语句。

根据您的使用案例,另一种方法是使用CountDownLatchhttps://developer.android.com/reference/java/util/concurrent/CountDownLatch.html

为此,您需要为要等待的每个请求增加倒计时锁存的计数。然后在每种方法的响应中,您将计算锁定。一旦锁存计数达到0,等待将释放,允许执行if语句。