我知道这可能是一个常见问题,但我真的被困在这一点上。
我正在从 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/