私はthis questionと答えています。この新しい質問が私の心に浮かんできます。その質問には DataSnapshotの値がnullである可能性はありますか?
は、私はこのように私のコード例について説明します。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
...
}
上記のコードの目的は、2つのFirebaseデータベースを呼び出すと、その値が得られたdoSometing()
後に実行することです。
次に、このif (firsCallDone && secondCallDone)
のような検証の代わりに、if (firstDataSnapshot != null && secondDataSnapshot != null)
のように検証できます。これは、私が知る限り、DataSnapshot は決して null(その値はonDataChange()
の内部に埋め込まれています)です。
でもわかりません。 onDataChange()
の中にDataSnapshotがnullになる可能性はありますか?もし存在すれば、それが起こるケースは何ですか?
この質問に答えるのに不思議と探している他の人には、[この回答をチェック](http://stackoverflow.com/a/41513071/4112725) – koceeng