我正在使用实时数据库,在以下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) {

            }
        });



我想知道它们之间的区别以及何时应使用CompletetionListenerOnCompleteListener

最佳答案

虽然这两个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/

10-11 04:02