【问题标题】:activity reference in model模型中的活动参考
【发布时间】:2019-10-06 16:25:33
【问题描述】:

我在我的应用程序中使用 MVVM 模式和 firebase 作为后端。 Firebase Phone 身份验证也存在,应该将其放置在单例模型中。登录过程需要回调绑定的活动引用,但创建对活动的引用可能会导致内存泄漏,因为它位于单例类中,而且我怀疑这通常不是一个好习惯。我应该把这个逻辑放在活动中还是有更好的方法?

这就是需要activity引用的方法:

void phoneLogin(String number) {

        PhoneAuthProvider.getInstance().verifyPhoneNumber(
                number,        // Phone number to verify
                1,                  // Timeout duration
                TimeUnit.MINUTES,   // Unit of timeout
---->           activty             // Activity (for callback binding)
                mCallbacks);        // OnVerificationStateChangedCallbacks


    }

【问题讨论】:

  • “它被放置在一个单例的模型中” - 为什么你的模型是一个单例?
  • 因为这是 firebase 的发展方向。我不应该这样做以防止多个连接进入火力基地吗?
  • 您可以查看我实施了Firebase auth 以及ViewModelRepository 的回购协议。
  • 使用 Google 的电话号码不进行身份验证,但我认为它可以帮助您理解。
  • Alex 我在研究 firebase 和 mvvm 时已经浏览了你的 repo,它确实对总体思路有所帮助,谢谢

标签: android firebase mvvm


【解决方案1】:

这是一个很好的挑战。我认为最好的方法是在你的单例类中创建一个LiveData。因此,您的活动可以观察到此LiveData 更改并在更改时验证您的手机,然后在回调中调用您的单例类方法以验证回调处理

【讨论】:

  • 这行得通,但我觉得它看起来有点难看,我会花更多时间在这上面,如果我最终这样做了,我会验证你的答案。谢谢。
  • @Hadi 这是我在任何地方发现的使用从 viewmodel 发送数据以在 mvvm 中查看的任何地方,你也会发现这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 2019-09-14
  • 1970-01-01
相关资源
最近更新 更多