簡體   English   中英

Android Firebase 在沒有任何偵聽器的情況下檢索所有數據

[英]Android Firebase retrieve all data without any listener

當我從我的 Android 應用程序加載onStart事件而不運行任何 Firebase 偵聽器時,如何從 Firebase 的實時數據庫中檢索所有數據值?

因為我不想運行任何偵聽器,例如 ("ondataChange, childAdded, childRemoved 等等...") 我不需要它。

從 Firebase 文檔中,偵聽器的 onDataChange 方法在附加時觸發一次,然后每次發生更改時觸發。 所以,是的,有一種方法可以在沒有事件的情況下獲取數據。 盡管如此,這種獲取只會使用偵聽器發生。

https://firebase.google.com/docs/database/android/read-and-write

偵聽值事件 要讀取路徑中的數據並偵聽更改,請使用 addValueEventListener() 或 addListenerForSingleValueEvent() 方法將 ValueEventListener 添加到 DatabaseReference。

您可以使用 onDataChange() 方法讀取給定路徑中內容的靜態快照,因為它們在事件發生時就存在。 此方法在附加偵聽器時觸發一次,並在每次數據(包括子項)更改觸發一次 事件回調被傳遞一個包含該位置所有數據的快照,包括子數據。 如果沒有數據,則調用exists() 時快照將返回false,並在其上調用getValue() 時返回null。

如果不使用偵聽器,就無法從 Firebase 實時數據庫或 Cloud Firestore 獲取數據。 Firebase 中的一切都與偵聽器有關,即使您是實時獲取數據或僅獲取一次數據,也需要在特定位置附加偵聽器。 沒有它,你就無法得到它。

編輯:從關於在 Android 中讀取數據的官方文檔,這里是一個代碼片段,演示了一個社交博客應用程序從數據庫中檢索帖子的詳細信息:

ValueEventListener postListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // Get Post object and use the values to update the UI
        Post post = dataSnapshot.getValue(Post.class);
        // ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};
mPostReference.addValueEventListener(postListener);

雖然,在這里回復晚了,但我選擇只在這里發帖,而不是為此創建另一個線程。

IMO,任何數據庫的基本期望是能夠讀取 DB 中可用的選定數據集。 我是否必須附加偵聽器或編寫自定義代碼都沒有關系。

雖然我知道實時數據庫的額外好處是它是事件驅動的,UI 不需要等待用戶啟動獲取數據的操作,但是如果有需要 !! 我花了幾個小時尋找這種獲取數據的方法。 哦:(

暫無
暫無

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

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