gpt4 book ai didi

java - Firebase数据库-强制按需读取值

转载 作者:行者123 更新时间:2023-12-02 11:38:17 24 4
gpt4 key购买 nike

我在强制从 Firebase 实时数据库读取值时遇到问题。我的申请流程:

SplashActivity->LoginActivity->MainActivity。当用户登录时,SplashActivity 和 LoginActivity 不存在。当用户注销时,主 Activity 完成并再次创建 LoginActivity。

在 MainActivity onCreate 事件中,从 Firebase 检索感兴趣的数据:

    FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("appVariant");

myRef.child("stable").addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
AppVariant v = dataSnapshot.getValue(AppVariant.class);
Log.d(BuildConfig.APPLICATION_ID, String.format("Data change: %s", v.toString()));
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});

它工作正常,但仅限于第一次创建 MainActivity 时。如果我注销(MainActivity 完成),然后再次登录(重新创建 MainActivity),onDataChanged 永远不会再次触发。

如何在不重新启动应用程序的情况下强制再次获取子值?我需要在用户每次登录后按需检索数据一次(不需要监视任何更改)。这可能吗?

最佳答案

这不是身份验证过程的正常流程。如果您有两个不同的 Activity (让我们忽略 SplashActivity),例如 LoginActivityMainActivity,您应该考虑执行以下操作:

  1. 将您的 LoginActivity 设置为您的应用程序在 AndroidManifest.xml 文件中启动的默认 Activity
  2. 将 MainActivity 添加为另一个 Activity
  3. 在 LoginActivity 中添加身份验证逻辑。
  4. 在 LoginActivity 中创建一个 authStateListener 来检查用户身份验证的状态。如果 firebaseUser != null 则将用户重定向到 MainActivity。
  5. 还在 MainActivity 中创建一个 authStateListener 以检查用户身份验证的状态。如果 firebaseUser == null 则将用户重定向到 LoginActivity。

通过身份验证后,您可以使用监听器,而不必担心您的 Activity 将重新启动。

就是这样。为了更好地理解,如果你有时间,看看我的一篇tutorials我已经一步步解释了使用两种不同 Activity 的所有身份验证过程。

关于java - Firebase数据库-强制按需读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48765608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com