-1

我正在開發Andriod應用程序。我從高層角度審視了我的工作,並且似乎有一個非常高的分支因素,可能因使用Firebase進行授權異步而導致潛在的[基於授權]崩潰。我試圖解決這個問題(簡單地說)是把我的所有代碼放到Firebase身份驗證結果的回調中(但之後我遇到了有關Google API Client [我使用位置]連接的競爭條件問題回調,以及其他小問題)。使用異步方法構建代碼的最佳方式(例如,auth檢索)?

在盡我所能使它儘可能水密之後,我對我的代碼在我的項目中的佈局方式有點不滿。例如。在我的MainActivity的onCreate方法中,我希望我可以將所有東西都線性地放在一個接一個地執行(但是我知道UX沒有異步執行的缺點)。

鑑於此,我想知道是否有人知道任何更好的方法來做到這一點或最佳做法,當涉及到這種事情。將所有代碼放入它所依賴的方法的回調中是最好的解決方案嗎?還是有我失蹤的東西?

感謝

回答

0

是有,你的結構是nature.To異步避免競爭條件每個條件必須相應地觸發。承諾的光榮的概念完美地爲你做這份工作。有利於返回一個對象...承諾做一些工作。這個對象有單獨的回調...成功和失敗。

這讓我們用更異步的方式處理異步代碼......一個非常好的功能是承諾...可以組合成依賴鏈。這只是意味着執行此操作,如果發生或失敗。請考慮使用rxjava或者更確切地說rxandroid,它體現了observable的概念。可以用來爲事件,異步請求和動畫建模。

觀察對象也可以被轉換,組合和使用。 是將所有代碼放入它所依賴的方法的回調中的最佳解決方案?就像你說的那樣,你應該把任務分解成單一的依賴關係,而不是一個龐大的整體回調。

+1

有些段落可能不錯。 –

+0

「將單獨的任務分解爲單獨的依賴」問題是我的代碼的其餘部分像用戶身份驗證一樣依賴於首要的依賴關係,因此它變成了一個非常混亂的回調鏈。我會研究你的建議,謝謝你的意見。 – Zuhayr

+0

恰恰沒有進一步的行動應該採取,除非認證依賴已滿足得到我的意思? – Remario