[英]Delay in volley request? - Android Volley
method1();
method2();
if(result1 && result2)
{
method3();
}
假設method1()
僅驗證文本框是否已填充且不為空,而method2()
驗證文本框的值是否在數據庫中具有重復項。
result1 and result2
是類布爾變量,
如果文本框被填充,則result1
將為true
,如果值沒有重復,則result2
將為true
,因此method2
具有截擊請求。
method3()
是一個將值插入表中的method3()
請求的過程。
我認為會發生的是:
method1()
將執行並且result1
將根據結果為真或假
method2()
將執行,並且此方法中包含的 volley 過程將影響result2
, result2
將根據result2
為真或假
resul1
和result2
將在if
語句中測試,如果兩者都為true
,將繼續執行method3()
取而代之的是, method2
的 volley 請求需要時間或延遲發生,並且在method2()
的 volley 請求響應之前,代碼繼續對result1
和result2
進行if
語句檢查。
這意味着即使整個表單都有效,由於這種情況,在if
語句檢查期間result2
將始終為 false。
這是我觀察到的。
所以現在我所做的是method3()
將在method2()
中的 volley 請求的onResponse
塊上執行,而method2()
將在method1()
的末尾執行。
但對我來說感覺很糟糕,我對它感到不舒服,而且按下按鈕后發生的所有事情的延遲也讓我感到不舒服,因為它太長了。
我只是一名大學生,我最近剛剛學習了 android 和 volley,我不知道如何使它變得更好,或者是否有其他選擇,請幫助我。 如果我的解釋聽起來很愚蠢,我也很抱歉。 如果無論如何我可以改進這個過程,請告訴我。 非常感謝。
在 Volley 中發生這種情況的原因是請求是異步發出的,一旦收到響應,就會執行您提供的回調。 它不會阻止執行。
要使用 Volley 做您想做的事情,您可以將請求鏈接在一起。 這意味着你將只執行method2
中的回調method1
,並在回調執行你的if語句method2
。
根據您的用例,另一種方法是使用CountDownLatch
: https : //developer.android.com/reference/java/util/concurrent/CountDownLatch.html
為此,您需要為要等待的每個請求增加倒計時閂鎖的計數。 然后在每個方法的響應中,你會倒數閂鎖。 一旦閂鎖計數達到 0,等待將釋放,允許執行 if 語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.