如何在 viewModel 中使用 firebase 身份验证实例
how to use firebase authentication instance in viewModel
我是 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 中实现了这段代码,但是监听器需要 activity 或附加到执行器。但是我没有。在 ViewModel 中注入 activity 安全吗? (据我所知,由于生命周期的问题,我们不应该这样做)如果不是,我该如何解决问题?
My problem is: I'm using ViewModel.
这不是问题。这是一个解决方案,因为它允许数据在屏幕旋转等配置更改后继续存在。
but the listener needs activity or executor to be attached to.
如果您正在使用侦听器,是的,确实如此。但是由于您使用的是 Kotlin,因此使用 Kotlin Coroutines 并使用 await() 暂停函数直到异步操作完成对我来说更有意义。
is it safe to inject activity in the ViewModel?
不,这不是关注点分离的工作方式。
在我看来,最好的选择是使用 MVVM 架构模式。我什至写了一篇关于这个话题的文章,叫做:
这是关于 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 中实现了这段代码,但是监听器需要 activity 或附加到执行器。但是我没有。在 ViewModel 中注入 activity 安全吗? (据我所知,由于生命周期的问题,我们不应该这样做)如果不是,我该如何解决问题?
My problem is: I'm using ViewModel.
这不是问题。这是一个解决方案,因为它允许数据在屏幕旋转等配置更改后继续存在。
but the listener needs activity or executor to be attached to.
如果您正在使用侦听器,是的,确实如此。但是由于您使用的是 Kotlin,因此使用 Kotlin Coroutines 并使用 await() 暂停函数直到异步操作完成对我来说更有意义。
is it safe to inject activity in the ViewModel?
不,这不是关注点分离的工作方式。
在我看来,最好的选择是使用 MVVM 架构模式。我什至写了一篇关于这个话题的文章,叫做:
这是关于 Firebase 匿名身份验证,但同样的规则适用于使用电子邮件和密码进行身份验证的情况。