java - 如何根据获取的数据启用或禁用我的应用程序中的功能

标签 java android firebase firebase-realtime-database

我正在为需要从 Firebase 数据库中获取一些数据然后显示在用户配置文件中的应用程序配置文件。

到目前为止,很好,这个要求已经完成,所有数据都已正确提取到用户配置文件。

但现在我有另一个要求,将我的一些功能放在一个地方,我正试图弄清楚如何以更好的方式做到这一点。

我用这个方法加载了配置文件的所有数据(因为这是一个大方法,我打算缩小它,但问题不在于代码,而是关于逻辑)。

        private void loadProfileData() {
            if (mActivity == null) {
                return;
            }

            mProgressBar.setVisibility(View.VISIBLE);
            mDatabase.child("users").child(mAuth.getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    if (dataSnapshot.exists()) {

                        UserModel model = dataSnapshot.getValue(UserModel.class);

    String username = model.getUsername();
  .
  .
  .
     //All data loaded 

    mProgressBar.setVisibility(View.GONE);

...

因此,在获取此数据时,我有一个溢出菜单,其中包含编辑用户个人资料的选项。

enter image description here

现在,在获取我的数据时启用了编辑配置文件选项,我需要将附加信息与从 Firebase 获取的所有用户信息一起传递给该 Activity,以便在那里加载并编辑它。

现在,我有两种想法

  1. 等到所有异步过程完成,然后启用编辑 导航菜单中的个人资料选项
  2. 在获取数据时保持菜单按钮处于启用状态,并且 当我在该 Activity 中时再次获取它(那将是 重新加载所有数据而不是将其作为额外传递 更有效率)但同时我正在做两个请求 相同的数据

有没有更好的方法来实现这个功能?

最佳答案

是否可以在后台加载所有用户数据,也许是在应用程序启动时?然后您可以显示编辑按钮,并假设当前缓存的数据是正确的。

您仍然可以提取最新的数据副本,然后相应地更新 UI, 如果它有任何不同。不过,我想数据不会经常更改,因此提前几分钟加载它大概是安全的。

关于java - 如何根据获取的数据启用或禁用我的应用程序中的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499598/

相关文章:

java - 扩展 AbstractTableModel 中的自定义 setValueAt 方法

java - 更流畅地移动光标(远程应用程序)

android - 如何提取视频帧并在android中为位图设置动画?

java - 如果使用maven,通常你把log4j.properties放在java或resources下?

java - Java中的空指针异常

android - Android 中如何退出 AOAP 模式

java - 在android中启动应用程序时初始化SQL

ios - Firebase 旧代码会发生什么

java - 如何获取 Firebase 中的最后一个节点?

firebase - 如何为使用 Cloud Firestore 的 Flutter 应用设置安全规则?