![](/img/trans.png)
[英]android firebase database how to retrieve all data from child node
[英]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.