所以我通過有關如何檢索數據輸入火力地堡的文檔去:https://firebase.google.com/docs/database/android/retrieve-data瞭解火力地堡ValueEventListeners onDataChange()
在我火力的應用程序,我檢索使用addListenerForSingleValueEvent值。 onDataChange方法中檢索到的這些值(此處爲userIdKey)用於更新數據庫中的其他位置。
我所觀察到的是,有時候除了 在(參考下面的代碼)更新。
DatabaseReference channelFollowersRef = mDatabase.child("followers").child(mKey);
channelFollowersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot childSnapshot:dataSnapshot.getChildren()){
String userIdKey=childSnapshot.getKey();
/*123*/ delChannelMap.put("/user-subscriptions/" + userIdKey + "//" + mChannelKey,null);
}
delChannelMap.put("/channels/" + mChannelKey, null);
delChannelMap.put("/user-channels/" + getUid() + "/" + mChannelKey, null);
delChannelMap.put("/channels-notices/" + mChannelKey, null);
delChannelMap.put("/channels-subChannels/" + mChannelKey, null);
delChannelMap.put("/channels-subChannels-comments/" + mChannelKey, null);
delChannelMap.put("/channel-followers/" + mChannelKey, null);
mDatabase.updateChildren(delChannelMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
Toast.makeText(ChannelDetailActivity.this, "Channel is now deleted.", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如何解決這個問題。
也可以有人詳細說明onDataChange是如何工作的,當節點中的所有值被檢索或檢索到'某些'數據時它會被調用嗎?
應該在檢索數據時在這種情況下使用AsyncTask。
謝謝弗蘭克如果錯誤仍然存在,我會盡快回復您。 –