我正在构建一个应用程序,但我目前面临一个问题:我按照谷歌指南在 LoginActivity 中编写了我的 Google/Facebook 登录按钮的所有事件。但是,我不想将业务代码保留在活动中以遵循 MVVM 架构。因此,我如何放置 Firebase 方法(需要活动引用和生命周期回调)?
我试过一个 LoginViewModel 正在工作,但它有对 LoginActivity 的引用
class LoginViewModel(application: Application) : BaseViewModelContext(application) {
lateinit var auth: FirebaseAuth
val Tag: String = LoginViewModel::class.java.simpleName;
val gso: GoogleSignInOptions
val googleSignInClient: GoogleSignInClient
init {
auth = FirebaseAuth.getInstance()
gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(application.getString(R.string.default_client_id))
.build()
googleSignInClient = GoogleSignIn.getClient(application, gso)
}
fun activityForResultLogin(requestCode:Int, resultCode: Int, data: Intent?, activity: Activity){
if(requestCode == Constants.RC_SIGN_IN){
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
// Google Sign In was successful, authenticate with Firebase
val account …Run Code Online (Sandbox Code Playgroud)