2016-07-22 6 views
2

私はonChildEventListenerを使って10,000の子を検索しています。
操作の完了に要する時間は約5秒です。
その間、アプリはフリーズします。
これを高速化する方法はありますか?
また、ValueEventListenerを使用しようとしましたが、子どものサイクリングが高速です。とにかく、それは信頼できる解決策ではなかったので、私はonChildEventListenerに戻りました。Firebase onChildEventListener slow

答えて

1

ValueEventListenerまたはChildEventListenerを使用するかどうかにかかわらず、データ取得プロセスはまったく同じです。唯一の違いは、イベントの発生/コールバックがアプリでどのように発生するかです。さらに、データベースへのすべてのネットワークアクティビティは別のスレッドで発生します。

これは、アプリをフリーズするデータを取得するのではなく、onDataChange()コールバックのデータを処理する可能性が高いことを意味します。あなたがそこで実質的な作業をしているなら、あなたはメインスレッドからそれをやりたいでしょう。

+0

ありがとうございます。 実際に遅さを引き起こした2つの事がありました。 私はonChildAdded()内でdataSnapshot.getValue()を複数回使用していましたが、追加されたすべての子に対してnotifyDataSetChanged()を使用していました。 私が直面している問題は、すべての子が検索されたときにUIを更新する必要があるということです。とにかくFirebaseには、それがいつ起こったかを知るための方法がないようです。 –