【问题标题】:How to enable or disable functions in my app depending on fetched data如何根据获取的数据启用或禁用我的应用程序中的功能
【发布时间】:2018-11-27 12:22:00
【问题描述】:

我正在为一个需要从 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);

...

因此,在获取此数据时,我有一个溢出菜单,可以选择编辑用户配置文件。

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

现在,我从两个方面考虑了这一点

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

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

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

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

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

    【讨论】:

    • 是的,我是这么想的,问题是用户看到的第一个 Activity 是 Profile 的,所以总是有菜单按钮,禁用所有溢出或编辑配置文件按钮将杀死一些用户体验
    • 啊,那么您需要个人资料数据吗?那么为什么不使用阻塞进度微调器或类似的东西,因为在您至少拥有他们的个人资料数据的 a 版本之前,您不希望他们进行交互?
    • 是的,我有一个进度条,它在开始时显示,直到所有数据都完成获取,然后我向用户显示所有数据,但问题是溢出菜单总是在那里,我在数据获取完成之前不希望它被禁用,我看到了 instagram 是如何做到这一点的,这有点像他们在应用程序启动时预加载数据,当你导航到配置文件部分时,一切都完成了,但在我的使用中案例我从个人资料活动开始
    • Jake 是个好主意,但想象一下,在加载屏幕上加载带有图像的配置文件可能会影响登录时间,但我会接受这个建议,因为它目前是一个很好的解决方法
    • 无论哪种方式,用户都必须等待,登录更有意义(因为无论如何他们都必须等待)。无论如何,这已经成为一个设计讨论,如果您有新问题,也许可以提出一个新问题?
    【解决方案2】:

    很好的问题加斯顿。所以回答你的问题:

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

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

    在获取数据时启用菜单按钮,并在我在该 Activity 中时再次获取它(这将重新加载所有数据,而不是将其作为额外数据传递,这将更有效)但同时我正在对相同的数据进行两次请求

    无需两次获取数据。这将浪费带宽和资源。一遍又一遍地获取数据并不是一个好的做法,因为您可以重复使用它。

    【讨论】:

    • 顺便说一句,我认为在需要之前获取数据并不是一个好的选择,因为用户可能会编辑他的个人资料,也可能不会。因此,创建额外的请求来获取一些您可能会使用的数据是不切实际的。恕我直言,除非我确实需要它,否则我不会获取数据。
    猜你喜欢
    • 2017-03-09
    • 2012-07-28
    • 2022-10-17
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多