我正在接听this question然后我想到了这个新问题。
在那个问题中,我这样描述我的示例代码:
boolean firstCallDone = false;
boolean secondCallDone = false;
DataSnapshot firstDataSnapshot = null;
DataSnapshot secondDataSnapshot = null;
onCreate() {
firstRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
firstCallDone = true;
firstDataSnapshot = dataSnapshot;
if (firsCallDone && secondCallDone)
doSomething();
}
...
}
secondRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
secondCallDone = true;
secondDataSnapshot = dataSnapshot;
if (firsCallDone && secondCallDone)
doSomething();
}
...
}
}
doSomething() {
// do something with firstDataSnapshot and secondDataSnapshot
...
}
以上代码的目的是在调用两个 Firebase 数据库并获取其值后执行 doSometing()
。
然后我意识到,我可以像这样验证 if (firstDataSnapshot != null && secondDataSnapshot != null)
而不是像这样验证 if (firsCallDone && secondCallDone)
>。这是因为据我所知,DataSnapshot 从不 为 null(在其值已填充到 onDataChange()
中)。
但我不确定。在 onDataChange()
中 DataSnapshot 是否有可能为空?如果有,是什么原因导致的?
最佳答案
DataSnapshot 永远不能为空,无论那里是否有数据(因为如果没有数据,您将得到一个空但非空的 DataSnapshot)。
关于android - DataSnapshot 值是否有可能为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512738/