如何在viewModel中使用firebase身份验证实例



我是Firebase的新手。我想在我的项目中使用Firebase身份验证。根据Firebase文档,用户可以使用以下代码登录:

auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
Log.d(TAG, "signInWithEmail:success")
} else {
Log.w(TAG, "signInWithEmail:failure", task.exception)
}
}

并附加了一个侦听器来处理成功登录或失败。

我的问题是:

我正在使用ViewModel。所以我在ViewModel中实现了这段代码,但监听器需要附加活动或执行器。但我没有。在ViewModel中注入活动是否安全?(据我所知,由于生命周期的原因,我们不应该这样做(如果不是,我该如何解决问题?

我的问题是:我使用的是ViewModel。

这不是问题。这是一个解决方案,因为它允许数据在屏幕旋转等配置更改中幸存下来。

但侦听器需要附加活动或执行器。

如果您正在使用侦听器,是的,确实如此。但是,由于您使用的是Kotlin,因此使用Kotlin Coroutines并使用await((挂起函数直到异步操作完成对我来说更有意义。

在ViewModel中注入活动是否安全?

不,这不是关注点分离的工作方式。

在我看来,最好的选择是使用MVVM体系结构模式。我甚至写了一篇关于这个主题的文章,名为:

  • 如何使用JetpackCompose在干净的架构中处理Firebase身份验证

这是关于Firebase匿名身份验证的,但相同的规则适用于使用电子邮件和密码进行身份验证的情况。

相关内容

最新更新