-1

我正在开发Andriod应用程序。我从高层角度审视了我的工作,并且似乎有一个非常高的分支因素,可能因使用Firebase进行授权异步而导致潜在的[基于授权]崩溃。我试图解决这个问题(简单地说)是把我的所有代码放到Firebase身份验证结果的回调中(但之后我遇到了有关Google API Client [我使用位置]连接的竞争条件问题回调,以及其他小问题)。使用异步方法构建代码的最佳方式(例如,auth检索)?

在尽我所能使它尽可能水密之后,我对我的代码在我的项目中的布局方式有点不满。例如。在我的MainActivity的onCreate方法中,我希望我可以将所有东西都线性地放在一个接一个地执行(但是我知道UX没有异步执行的缺点)。

鉴于此,我想知道是否有人知道任何更好的方法来做到这一点或最佳做法,当涉及到这种事情。将所有代码放入它所依赖的方法的回调中是最好的解决方案吗?还是有我失踪的东西?

感谢

回答

0

是有,你的结构是nature.To异步避免竞争条件每个条件必须相应地触发。承诺的光荣的概念完美地为你做这份工作。有利于返回一个对象...承诺做一些工作。这个对象有单独的回调...成功和失败。

这让我们用更异步的方式处理异步代码......一个非常好的功能是承诺...可以组合成依赖链。这只是意味着执行此操作,如果发生或失败。请考虑使用rxjava或者更确切地说rxandroid,它体现了observable的概念。可以用来为事件,异步请求和动画建模。

观察对象也可以被转换,组合和使用。 是将所有代码放入它所依赖的方法的回调中的最佳解决方案?就像你说的那样,你应该把任务分解成单一的依赖关系,而不是一个庞大的整体回调。

+1

有些段落可能不错。 –

+0

“将单独的任务分解为单独的依赖”问题是我的代码的其余部分像用户身份验证一样依赖于首要的依赖关系,因此它变成了一个非常混乱的回调链。我会研究你的建议,谢谢你的意见。 – Zuhayr

+0

恰恰没有进一步的行动应该采取,除非认证依赖已满足得到我的意思? – Remario