Android 截击请求延迟安卓截击

Android 截击请求延迟安卓截击,android,android-volley,Android,Android Volley,假设method1()仅验证文本框是否已填充而非为空,而method2()验证数据库中文本框的值是否重复 result1和result2是类布尔变量 如果文本框被填充,result1将为true,如果值没有重复项,result2将为true,因此method2有截击请求 method3()是一个向表中插入值的截击请求过程 我认为会发生的是: method1()将执行,result1将根据结果为真或假 method2()将执行,此方法中包含的截击过程将影响result2,result2将根据结果为

假设
method1()
仅验证文本框是否已填充而非为空,而
method2()
验证数据库中文本框的值是否重复

result1和result2
是类布尔变量

如果文本框被填充,
result1
将为
true
,如果值没有重复项,
result2
将为
true
,因此
method2
有截击请求

method3()
是一个向表中插入值的截击请求过程

我认为会发生的是:

  • method1()
    将执行,
    result1
    将根据结果为真或假

  • method2()
    将执行,此方法中包含的截击过程将影响
    result2
    result2
    将根据结果为真或假

  • result1
    result2
    将在
    if
    语句中进行测试,如果两者都
    true
    ,则将进入
    method3()
  • 相反,
    method2
    中的截击请求需要时间或延迟发生,并且在
    method2()的截击请求响应之前,代码继续执行
    if
    语句检查
    result1
    result2

    这意味着,即使整个表单有效,由于这种情况,
    result2
    if
    语句检查期间将始终为false

    这是我观察到的

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

    但它让我感觉不舒服,而且我对它感到不舒服,而且从按下按钮开始的所有事情的延迟让我感到不舒服,因为它太长了


    我只是一名大学生,最近刚刚学习了安卓和截击,我不知道如何让它变得更好,或者如果有其他选择,请帮助我。如果我的解释听起来很愚蠢,我也很抱歉。如果有任何我可以改进这个过程,请告诉我。非常感谢。

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

    要想通过截击来做你想做的事情,你需要将请求链接在一起。这意味着您将只在
    method1
    的回调中执行
    method2
    ,并在
    method2
    的回调中执行if语句

    另一种方法,根据您的用例,可以使用
    倒计时闩锁


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

    当您得到result1 start method2时,当您得到result2 check and start method3时,您的意思是if(result1){method2();if(result2){method3();}?因为我试过了,但也没用。没有,但是你没有发布正确的代码,所以我不能给你写一个如何做到这一点的例子
    method1();
    method2();
    if(result1 && result2)
    {
            method3();
    }