【问题标题】:Firebase Authentication: Sign out when app gets killedFirebase 身份验证:在应用程序被杀死时退出
【发布时间】:2019-09-11 10:57:31
【问题描述】:

我有一个 Android 应用程序,它允许用户创建用户帐户,但也可以在没有用户帐户的情况下继续。身份验证是使用 Firebase 完成的。 MainActivity 是登录活动。在这里,用户可以选择登录或以访客身份继续(无需用户帐户)。如果他们登录,他们可以在关闭应用程序时选择是否要保持登录状态。 我希望,当他们继续作为访客或检查保持登录复选框时,他们会直接导航到下一个活动,并且 LoginActivity 会被 finish() 销毁,因此下一个活动是第一个活动后台。因此,这就是 Activity,当用户按下 Back-Button 时,应用程序将在其中关闭。在这种情况下,我想检查用户是否应该注销。我已经这样做了:

在 MainActivity 中,我在 SharedPreferences 中保存了一个布尔变量:

override fun login(email: String, password: String, stayLoggedIn: Boolean) {
    mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if(task.isSuccessful) {
                getDefaultSharedPreferences(this).edit().putBoolean(getString(R.string.continue_as_guest), false).apply()
                getDefaultSharedPreferences(this).edit().putBoolean(getString(R.string.stay_logged_in), stayLoggedIn).apply()
                startActivity(Intent(this, NavigationActivity::class.java))
                finish()
            } else {
                //show message
            }
        }
}

然后,在下一个 Activity 中,现在是 backstack 中的第一个 Activity,我重写了 onDestroy 方法:

override fun onDestroy() {
    super.onDestroy()
    val stayLoggedIn = getDefaultSharedPreferences(this).getBoolean(getString(R.string.stay_logged_in), false)
    if(!stayLoggedIn && mAuth.currentUser != null) {
        mAuth.signOut()
    }
}

当用户通过后退按钮以通常的方式关闭应用程序时,这非常有用。但是当应用程序以其他方式被终止时(手机因电池电量耗尽或应用程序通过主页按钮终止),onDestroy-Method 不会被调用,这意味着用户不会退出。

我读到你不能在应用程序被杀死的过程中处理那些没有调用 onDestroy 方法的情况,所以你必须在应用程序再次打开时处理它。但我不知道它是如何工作的。希望有人可以帮助我。

【问题讨论】:

  • 您应该能够在 SharedPreferences.Editor 的同一个实例上调用多个 put* 方法 - 例如:sharedPrefs.edit().putBoolean("key_goes_here", true).putBoolean("another_key", false),而不是获取单独的编辑器实例。

标签: android firebase kotlin firebase-authentication


【解决方案1】:

当您第一次安装应用程序时,在 Activity 中逐个调用方法

onCreate()
onStart()
onResume()

之后,当您按下主页按钮时,然后执行以下方法调用

onPause()
onStop()

注意:按下 Home 键后不会调用 onDestroy() 方法。

关于电池电量不足请关注link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多