【发布时间】:2017-01-06 19:15:56
【问题描述】:
我正在回答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 是否有可能为空?如果有,是什么情况导致它发生?
【问题讨论】:
标签: android firebase firebase-realtime-database