簡體   English   中英

截擊請求延遲? - 安卓排球

[英]Delay in volley request? - Android Volley

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

假設method1()僅驗證文本框是否已填充且不為空,而method2()驗證文本框的值是否在數據庫中具有重復項。

result1 and result2是類布爾變量,

如果文本框被填充,則result1將為true ,如果值沒有重復,則result2將為true ,因此method2具有截擊請求。

method3()是一個將值插入表中的method3()請求的過程。

我認為會發生的是:

  1. method1()將執行並且result1將根據結果為真或假

  2. method2()將執行,並且此方法中包含的 volley 過程將影響result2result2將根據result2為真或假

  3. resul1result2將在if語句中測試,如果兩者都為true ,將繼續執行method3()

取而代之的是, method2的 volley 請求需要時間或延遲發生,並且在method2()的 volley 請求響應之前,代碼繼續對result1result2進行if語句檢查。

這意味着即使整個表單都有效,由於這種情況,在if語句檢查期間result2將始終為 false。

這是我觀察到的。

所以現在我所做的是method3()將在method2()中的 volley 請求的onResponse塊上執行,而method2()將在method1()的末尾執行。

但對我來說感覺很糟糕,我對它感到不舒服,而且按下按鈕后發生的所有事情的延遲也讓我感到不舒服,因為它太長了。

我只是一名大學生,我最近剛剛學習了 android 和 volley,我不知道如何使它變得更好,或者是否有其他選擇,請幫助我。 如果我的解釋聽起來很愚蠢,我也很抱歉。 如果無論如何我可以改進這個過程,請告訴我。 非常感謝。

在 Volley 中發生這種情況的原因是請求是異步發出的,一旦收到響應,就會執行您提供的回調。 它不會阻止執行。

要使用 Volley 做您想做的事情,您可以將請求鏈接在一起。 這意味着你將只執行method2中的回調method1 ,並在回調執行你的if語句method2

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

為此,您需要為要等待的每個請求增加倒計時閂鎖的計數。 然后在每個方法的響應中,你會倒數閂鎖。 一旦閂鎖計數達到 0,等待將釋放,允許執行 if 語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM