我正在为一个应用程序配置文件,该应用程序需要从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获取的所有用户信息一起传递给该活动,以便将其加载并编辑。
现在,我已经以两种方式想到了
有没有更好的方法来实现此功能?
答案 0 :(得分:1)
是否有可能在后台(例如在应用启动时)加载所有用户数据?然后,您可以显示编辑按钮,并假定当前数据缓存正确。
您仍然可以提取数据的最新副本,然后相应地更新UI 。我认为数据不会经常更改,因此,几分钟前加载它大概是安全的。
答案 1 :(得分:1)
好的问题加斯顿。因此,回答您的问题:
等待所有异步过程完成,然后在导航菜单中启用“编辑配置文件”选项
我认为,这是解决此问题的推荐方法。等待数据,然后启用按钮。老实说,您无法编辑尚不可用的内容。因此,获取数据,启用按钮,然后让用户更新自己的个人资料。
在获取数据时使菜单按钮保持启用状态,并在我进入该Activity时再次获取它(这将重新加载所有数据,而不是将其作为额外的方法传递,这将更有效),但同时我正在为相同的数据做两个请求
无需两次获取数据。这将浪费带宽和资源。没有一种好方法可以反复获取数据,因为可以重复使用。