【发布时间】:2017-11-18 17:39:25
【问题描述】:
这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ValueEventListener userNavListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.v(Tag, "Called Multiple Times");
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mDatabase.addValueEventListener(userNavListener);
}
我想要什么:
- 在背景上应用 addValueEventListener 的单个实例
- 因此,我确实不想使用 onDestroy() 方法
如果我这样做,问题是 Log.v 打印了不止一次,而数据只更改了一次:
- 我打开应用程序,
- 我再次关闭应用程序,
- 我再次打开应用程序,
- 那么问题就出现了,就是onDataChange日志打印了三次。
我有什么解决方案可以防止这种情况发生吗?
感谢您抽出宝贵时间阅读此问题,如果您知道答案,请回答我的问题。
【问题讨论】:
-
如果您不希望 Firebase 触发数据同步事件,请不要使用它来存储您的数据。这就是它的构建方式......
-
@cricket_007 问题是当数据只更改一次时,Log.v 被多次调用。
-
那么数据实际上并没有改变一次
-
不过,不清楚为什么这是一个实际问题。数据将始终更新为 Firebase 中的数据。显示实际代码的minimal reproducible example 以说明为什么不能多次更新数据
-
在你的MainActivity中添加一个addValueEventListener,然后尝试打开你的应用,然后关闭它,再打开它,然后更改数据库以触发eventListener,然后看看Log说了什么,当数据库发生变化时,日志会打印 3 次
标签: android firebase firebase-realtime-database