onChildAdded在每个应用程序启动时触发,但数据库中没有新条目

时间:2016-06-29 09:18:53

标签: android firebase firebase-realtime-database

在我的应用程序的每次启动时,我收到相同的" onChildAdded"动作。所以我的应用程序认为,这些孩子最近添加了。但它们从一开始就在数据库中。 因此,当我关闭我的应用程序并再次启动时,我会再次收到这些操作。每次。

我也打电话给

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

在我的Application类中。

如何解决这个问题,所以只有在将新数据添加到数据库时才会调用侦听器?

2 个答案:

答案 0 :(得分:2)

最简单的方法是保留用户在本地存储中看到的最新项目的密钥(例如SharedPreferences)。然后当您再次启动活动时,从该键开始:

String lastSeenKey = sharedPreferences.getString("lastSeenKey", "-");
ref.orderByKey().
   .startAt(lastSeenKey)
   .addChildEventListener(...

然后在onChildAdded()中确保将最新密钥存储在共享首选项中。

答案 1 :(得分:0)

您可以使用once('child_added')once('value')方法在应用启动时接收来自firebase的所有数据条目。然后将它们保存在本地变量中。 然后你订阅活动。当它发射时 - 你首先要检查那个孩子是否已经知道。如果不是 - 做你需要的行动。