离开听众会导致任何问题吗?即,如果我多次调用此代码,侦听器是否会导致生成多个线程?
String ref = Constants.Client + "/" + Constants.firebaseProjects + "/" + Constants.ProjectName + "/units";
DatabaseReference dataBaseRef = FirebaseDatabase.getInstance().getReference(ref);
dataBaseRef.keepSynced(true);
dataBaseRef.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot snapshot) {
}
}
答案 0 :(得分:1)
添加单个事件侦听器时,侦听器将在调用后自动删除。请参阅docs。
此侦听器将使用该位置的数据值触发一次。
所以多次调用它不会有任何问题,因为它只使用一次。此外,由于它将被自动删除,因此不会产生多个线程。
由于您已编辑了ValueEventListener的问题,因此行为不同。当指定节点上的数据发生更改时,您将调用各种侦听器。请注意,firebase侦听器尚未识别生命周期,因此许多侦听器在您不需要它们时会有许多移除它们的责任,如果侦听器将值返回到不存在的活动,则可能会出现异常。或者你跟随@Andy的消化并一遍又一遍地使用相同的监听器。