这是我的代码:
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日志打印了三次。
我有解决方案来防止这种情况吗?
感谢您抽出宝贵时间阅读此问题,如果您知道答案,请回答我的问题。
最佳答案
您必须删除不再需要的eventListeners。
安全的地方是在onDestroy()
中进行
@Override
public void onDestory() {
if (mDatabase!= null && userNavListener!= null) {
mDatabase.removeEventListener(userNavListener);
}
}