[英]How to retrieve data from firebase database in a efficient way
我正在創建一個 android 應用程序,我必須在其中比較一個節點並在節點存在時檢索一些值,並將這些值存儲在SharedPreferences
中,如代碼所示:
dbRef = FirebaseDatabase.getInstance().getReference().child("users");
dbRef.orderByChild("email").equalTo(mAuth.getCurrentUser().getEmail()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
//Toast.makeText(google_sign_in.this, "In sign in firebase", Toast.LENGTH_SHORT).show();
for (DataSnapshot ds : snapshot.getChildren()) {
SharedPreferences.Editor editor = sf.edit();
editor.putString("phone", ds.child("phone").getValue(String.class));
editor.putString("email", ds.child("email").getValue(String.class));
editor.putString("fullName", ds.child("fName").getValue(String.class));
editor.putString("lastName", ds.child("lName").getValue(String.class));
editor.apply();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
OnCreate 方法
sf = getSharedPreferences(SHARED_PREF, MODE_PRIVATE);
name = sf.getString("firstName", "null") + " " + sf.getString("lastName", "null");
問題
每當首次啟動活動時,名稱始終為null
。 第一次啟動活動時,數據檢索過程太慢,即使我將這段代碼放在OnStart
方法中,我也從sharedpreference
收到 null 值。
我想要的是
我想在啟動此活動之前檢索所有數據,這樣我就不會收到來自sharedpreferences
的null
值。
根據 Android 生命周期, onCreate
在onStart
之前執行。 將代碼粘貼到onCreate
中。
資料來源: Android 文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.