多个FireBase监听器调用,任何异常?

时间:2018-02-20 12:05:36

标签: java android multithreading firebase firebase-realtime-database

离开听众会导致任何问题吗?即,如果我多次调用此代码,侦听器是否会导致生成多个线程?

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) {

    }       
}

1 个答案:

答案 0 :(得分:1)

添加单个事件侦听器时,侦听器将在调用后自动删除。请参阅docs

  

此侦听器将使用该位置的数据值触发一次。

所以多次调用它不会有任何问题,因为它只使用一次。此外,由于它将被自动删除,因此不会产生多个线程。

由于您已编辑了ValueEventListener的问题,因此行为不同。当指定节点上的数据发生更改时,您将调用各种侦听器。请注意,firebase侦听器尚未识别生命周期,因此许多侦听器在您不需要它们时会有许多移除它们的责任,如果侦听器将值返回到不存在的活动,则可能会出现异常。或者你跟随@Andy的消化并一遍又一遍地使用相同的监听器。