在我的应用程序的每次启动时,我收到相同的" onChildAdded"动作。所以我的应用程序认为,这些孩子最近添加了。但它们从一开始就在数据库中。 因此,当我关闭我的应用程序并再次启动时,我会再次收到这些操作。每次。
我也打电话给
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
在我的Application类中。
如何解决这个问题,所以只有在将新数据添加到数据库时才会调用侦听器?
答案 0 :(得分:2)
最简单的方法是保留用户在本地存储中看到的最新项目的密钥(例如SharedPreferences
)。然后当您再次启动活动时,从该键开始:
String lastSeenKey = sharedPreferences.getString("lastSeenKey", "-");
ref.orderByKey().
.startAt(lastSeenKey)
.addChildEventListener(...
然后在onChildAdded()
中确保将最新密钥存储在共享首选项中。
答案 1 :(得分:0)
您可以使用once('child_added')
或once('value')
方法在应用启动时接收来自firebase的所有数据条目。然后将它们保存在本地变量中。
然后你订阅活动。当它发射时 - 你首先要检查那个孩子是否已经知道。如果不是 - 做你需要的行动。