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

标签 java android firebase firebase-realtime-database

我在强制从 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/

相关文章:

java - Java 1.5 是否有默认的 -Xmx 设置?

java - XML 解析器在 java 中获取名称和值对的结果

IBM domino Lotus 的 Java 代理

java - 确定网格袋布局中的单元格是否被占用

android - 如何在android中的/system/etc/permissions中添加android.hardware.usb.host.xml

java - 从多个 Activity 在模型中设置数据

android - 在 Android 中填充 viewHolder 之前按特定条件过滤 geoFire 查询

java - Android,设置背景拉伸(stretch)或放大但永远不会正确

Firebase 存储结构示例

android - 处于 alpha 测试中的 Native Express 广告