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

时间:2018-11-27 12:22:01

标签: 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获取的所有用户信息一起传递给该活动,以便将其加载并编辑。

现在,我已经以两种方式想到了

  1. 等待所有异步过程完成,然后启用编辑 导航菜单中的个人资料选项
  2. 在获取数据和 当我在该活动中时再次获取它(那将是 重新加载所有数据,而不是将其作为额外的传递 效率更高),但同时我对两个请求 相同的数据

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

2 个答案:

答案 0 :(得分:1)

是否有可能在后台(例如在应用启动时)加载所有用户数据?然后,您可以显示编辑按钮,并假定当前数据缓存正确。

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

答案 1 :(得分:1)

好的问题加斯顿。因此,回答您的问题:

  

等待所有异步过程完成,然后在导航菜单中启用“编辑配置文件”选项

我认为,这是解决此问题的推荐方法。等待数据,然后启用按钮。老实说,您无法编辑尚不可用的内容。因此,获取数据,启用按钮,然后让用户更新自己的个人资料。

  

在获取数据时使菜单按钮保持启用状态,并在我进入该Activity时再次获取它(这将重新加载所有数据,而不是将其作为额外的方法传递,这将更有效),但同时我正在为相同的数据做两个请求

无需两次获取数据。这将浪费带宽和资源。没有一种好方法可以反复获取数据,因为可以重复使用。