我在接受this question这个新的问题出现在我脑海里。DataSnapshot值是否有空值?
在这个问题中,我描述我的示例代码:
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
...
}
以上代码的目的是为了执行doSometing()
经过两次火力地堡数据库被称为及其价值得到。
然后我意识到,而不是像这样验证if (firsCallDone && secondCallDone)
,我可以像这样验证它if (firstDataSnapshot != null && secondDataSnapshot != null)
。那是因为据我所知,DataSnapshot 从来没有 null(在其值已被填入onDataChange()
之后)。
但我不确定。 DataSnapshot是否有可能在onDataChange()
内为空?如果有,那么发生这种情况的原因是什么?
对于其他人想知道和寻找答案这个问题,也[检查此答案](http://stackoverflow.com/a/41513071/4112725) – koceeng