2016-04-13 25 views
1

私はfirebaseデータベースクエリの作業をしていました。しかし、彼らがそこに書いているようにドキュメントを読んでいる間は少し混乱していたリスナーのonChildAdded()は子供が追加されるたびに呼び出されます。FirebaseのaddListenerForSingleValueEventメソッドとaddChildEventListenerメソッドの違いは何ですか?

私のシナリオでは、すべての子を照会する必要があります。上記の方法で完了するか、addListenerForSingleValueEventで完了する必要がありますか?

としても、彼らはそのリスナーが、それはどういう意味ref.removeEventListener(originalListener)

  1. のように切り離す必要があるドキュメントに言及しますか?
  2. 新しいデータがデータベースに追加されたときに何度も何度も呼び出す予定ですか?
+0

代わりに( 'addChildEventListener()'と 'addListenerForSingleValueEvent()')のスニペットを作成し、データベースにいくつかの項目を追加して何が起こるかを見てみましょう。それ、私たちはあなたのためにドキュメントを再ハッシュするだけです。それでも問題が解決しない場合は、コードスニペットと期待した内容を投稿してください。 –

+0

貴重なアドバイスありがとうございます..私は間違いなくすぐに比較の両方の方法を使用します。現在addListenerForSingleValueEvent()を使用していましたが、それはaddChildEventListener()以上のことを少しは理解しています。ありがとうございました。すぐに私の質問が更新されます。 :) –

答えて

2

どちらも同じです、どのように使用するかによって異なります。個人的にはChildEventListenerは、発生したアクション(子の追加、変更、削除など)に関して何をすべきかを定義することができるため、柔軟性があります。 documentationsに基づいて、唯一の違いはです。ValueEventListenerは、リスナが1つしかないので、発生した変更(追加、変更、または削除)に関して定義した「もの」を実行しますOnDataChange()。その間にChildEventListenerには、リスナー/アクション内で何をすべきかを定義できるように、リスナーが4つあり、onChildAdded()、​​、onChildRemoved()、およびonChildMoved()です。

removeEventListener()については、firebaseが反応的であり、firebaseが与えられたノード(データベース参照)で何が起こっているかを積極的に聞く必要があります。したがって、リスナーを削除すると、指定されたノードをリッスンしないため、removeEventListener()以降の変更はfirebaseによって認識されません。そして、はい、両方ChildEventListenerValueEventListenerは、常に積極的に耳を傾け、毎回(onDataChange()onChildAdded()追加された新しいデータを定義したアクションを行います。

CMIIWと私の英語はご容赦。 よろしく、

RM

+0

CMIIWは何ですか?知識だけを求めて.. –

関連する問題