Я работаю над профилем для приложения, которое требует, чтобы некоторые данные были извлечены из базы данных 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);
...
Итакпока эти данные выбираются, у меня есть меню переполнения, в котором есть возможность редактировать профиль пользователя.

Теперь эта опция редактирования профилявключен, пока мои данные извлекаются как beign, и мне нужно передать дополнительные данные в эту активность со всей пользовательской информацией, полученной из Firebase, чтобы загрузить ее и отредактировать.
Теперь я подумал об этомдва пути
- Дождитесь завершения всего асинхронного процесса, а затем включите опцию редактирования профиля в навигационном меню
- Оставьте кнопку меню включенной, пока данные извлекаются, и извлекайте ее снова, когда яЯ нахожусь внутри этой деятельности (это будет перезагружать все данные вместо того, чтобы передавать их как дополнительные, что будет более эффективным), но в то же время я делаю два запроса на одни и те же данные
Есть ли лучший способ реализовать эту функцию?