android - 从 Firebase 中的多个位置接收到数据后继续执行

标签 android firebase firebase-realtime-database

我知道这可能是一个常见问题,但我真的被困在这一点上。

我正在从 2 个多个位置接收数据,在从两个位置接收数据后,我需要继续执行并将该数据返回给调用方法。

我知道这个线程:https://stackoverflow.com/a/33204705/1820644但它实际上不适合这里,因为我需要将数据返回给调用方法。

对于阻塞UI线程的方法我可以从AsyncTask调用它,没有问题。但是如何将数据返回到我已经成功执行的调用方法。

这是在我的助手类中

// This method should be called in AsyncTask
public boolean doComputation() {
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("activity")
                .child(id);

        ref.child("path1").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
               // Call 1 completed
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        ref.child("path2").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
               // Call 2 completed
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        // Some more to do

        // Need to return true after execution complete
        return true;
}

我无法在 onDataChange 内部返回 true,因为它将计入 onDataChange 方法而不是 doComputation

我可以通过将其移动到另一个方法来执行计算,并且在每次 onDataChange 回调之后我可以检查变量计数,如果它是 2 我可以执行计算。但在它完成后,我需要通知它执行完成的调用方法。

这对于 Firebase 来说有点棘手。但是,我现在真的被困住了。任何帮助都感激不尽。谢谢。

最佳答案

我已经使用了 Firebase 已经使用的 Tasks API。太棒了。

如@qbix 所述,This answer做同样的事情。答案中的例子解释得很好。

您还可以找到此 API 说明的视频链接 here .

我已经试过了。解决了我的问题。

关于android - 从 Firebase 中的多个位置接收到数据后继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38685879/

相关文章:

android - 如何知道用户是否已验证他/她的电子邮件地址

Firebase 按键 - 允许的字符

android - 创建查询以获取等于当前用户 ID 的值

Android可绘制: Specifying shape width in percent in the XML file?

android - 如何将 Celestia 构建到 Android?

ios - Firebase iOS -.queryOrdered().queryEqual(toValue : and child(). observeSingleEvent 之间有什么区别

ios - 是否有从 firebase 实时数据库中获取 n 个元素的功能?

java - 单击菜单后调用另一个 Activity

Android对齐按钮取决于可见性

node.js - 使用node.js登录Firebase服务器: databaseAuthVariableOverride "SyntaxError: Unexpected identifier"