Android 模型中的活动引用

Android 模型中的活动引用,android,firebase,mvvm,Android,Firebase,Mvvm,我在我的应用程序中将MVVM模式与firebase一起用作后端。Firebase电话身份验证也存在,它应该放在一个单例模型中。登录过程需要一个用于回调绑定的活动引用,但创建对该活动的引用可能会导致内存泄漏,因为它位于单例类中,而且我怀疑这通常不是一个好的做法。我应该把这个逻辑放在活动中,还是有更好的方法 这就是需要活动参考的方法: void phoneLogin(String number) { PhoneAuthProvider.getInstance().verifyPho

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

这就是需要活动参考的方法:

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


    }

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

“它被放置在模型中,它是一个singleton”-为什么您的模型是一个singleton?因为firebase的东西就在这里。我不应该这样做以防止多个连接进入firebase吗?你可以检查我的一个repo,其中我与a和a一起实现了。电话号码的身份验证不是通过谷歌进行的,但我认为它可以帮助你了解这个想法。Alex我在研究firebase和mvvm时已经检查过你的repo,确实如此帮我理解一下,谢谢,这会管用的,但我觉得它看起来有点难看,我会花更多的时间在这上面,如果我最终这么做了,我会验证你的答案。谢谢。@Hadi这是我在任何地方找到的,用于从viewmodel发送数据到mvvm中的视图,您也会找到它