我正在使用实时数据库,在以下2种方法之间感到有点困惑:
ROOT_REF.updateChildren(map, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {
}
});
ROOT_REF.updateChildren(map).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
我想知道它们之间的区别以及何时应使用
CompletetionListener
或OnCompleteListener
最佳答案
虽然这两个updateChildren()
方法都做同样的事情:
将特定的子键更新为指定的值。
DatabaseReference的区别:
updateChildren(Map update)
和
updateChildren(Map update, DatabaseReference.CompletionListener listener)
是第一个返回一个Task<Void>
对象,您可以使用addOnCompleteListener查看工作何时完成:
添加在任务完成时调用的侦听器。
而第二个返回void
。为了更新子级并查看工作何时完成,应该将DatabaseReference.CompletionListener)
对象作为第二个参数传递,该对象基本上在做相同的事情。一旦实现了onComplete()
方法,当特定参考上的工作完成时,您将收到通知。
您应该根据自己的喜好使用一种。我通常使用第一个,因为如果有更多需要完成的任务,可以使用Tasks的whenAllComplete(Task... tasks):
返回带有任务列表的任务,当所有指定任务完成时,任务列表将成功完成。
而且我觉得这更方便。
关于java - OnCompleteListener和CompletionListener有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57647578/