ガストンSaillen:
私は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からフェッチされ、すべてのユーザー情報とその活動にエキストラを渡す必要があります。
今、私は2つの方法でこれを考えています
- すべての非同期プロセスが完了するまで待ってから、ナビゲーションメニューの編集プロファイルオプションを有効にします
- データをフェッチしているときにメニューボタンが有効になったまま、私は(それがより効率的になり、余分なようにそれを渡すのではなく、すべてのデータを再ロードするだろう)その活動の内側にいる時、再びそれをフェッチするが、同時に私はよ同じデータのための2つの要求をしています
この機能を実装するために任意のより良い方法はありますか?
JakeSteam:
それはおそらく、アプリの起動時に、バックグラウンドですべてのユーザーデータをロードすることは可能ですか?あなたは、[編集]ボタンを表示し、データの現在のキャッシュが正しいと仮定することができます。
あなたはまだ、データの最新のコピーを引っ張って、それに応じてUIを更新することができた場合、それは何が違うのです。私は数分前にそれをロードすることはおそらく安全であるようにデータが、しかし頻繁に変更されません想像します。