簡體   English   中英

如何以有效的方式從 firebase 數據庫中檢索數據

[英]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 值。

我想要的是

我想在啟動此活動之前檢索所有數據,這樣我就不會收到來自sharedpreferencesnull值。

根據 Android 生命周期, onCreateonStart之前執行。 將代碼粘貼到onCreate中。

資料來源: Android 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM