【问题标题】:Firebase retrieve all data on app startFirebase 在应用启动时检索所有数据
【发布时间】:2016-07-18 21:35:28
【问题描述】:

我无法使用 firebase 文档和 google 查找有关如何在应用启动时检索所有数据的任何信息。

假设,我想在没有任何事件的情况下获取应用启动时的所有以下数据。并存储在 ArrayList 中。假设ArrayList<Quote> 和quote 有三个字段(int id、String text、String author)。

[{
    "id" : 1,
    "text": "There are 1,411 tigers left in India.",
    "author": "NULL"
}, {
    "id" : 2,
    "text": "The Greek for \"left-handed\" also means \"better\".",
    "author": "NULL"
}]

根据documentation,有一个名为onDataChange()的方法,但是,应用程序不会更改任何数据。如何获取所有数据并将其存储在 ArrayList<Quote> 中,我可以将其传递给自定义适配器。

【问题讨论】:

  • 从文档中读取“值事件”部分:onDataChange() [...] This method is triggered once when the listener is attached and again every time the data, including children, changes.

标签: java android firebase firebase-realtime-database


【解决方案1】:

保持数据新鲜

Firebase 实时数据库为活动的侦听器同步并存储数据的本地副本。此外,您可以使特定位置保持同步。

DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.keepSynced(true);

即使引用没有活动的侦听器,客户端也会自动下载这些位置的数据并保持同步。您可以使用以下代码行关闭同步。

请参阅此文档以获取更多信息; https://firebase.google.com/docs/database/android/offline-capabilities

【讨论】:

  • 它在哪里存储本地副本?可以参考吗?可以访问吗?
【解决方案2】:

onDataChange() 方法在附加侦听器(ValueEventListenerChildEventListener)时直接调用,因此您无需对数据进行任何更改即可触发该方法。

来自文档Firebase - Retrieve Data on Android

此方法在附加监听器时触发一次,并且在每次数据(包括子项)发生变化时再次触发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多