1
私は、このユーザーがデータベースに存在するかどうかを確認するFirebase内部からデータを取得したいが、私は解決できない問題が発生し、リスナー・トリガー後半、これは私のコードです: -firebaseデータベースからフェッチデータ
- 私がループしながら、削除する場合、私は、オブジェクトの取得ができない高速な
ループ私は無限ループに入りながら、私は続けるならば、私はなぜリスナー誘発しない理由を 分からない
DataSnapshot fetched ; public boolean user_exist(final String user) throws Exception { users.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { fetched = dataSnapshot ; } @Override public void onCancelled(DatabaseError databaseError) { } }); while (fetched == null){ Log.e("dbController","not fetched yet"); } return fetched.hasChild(user); }
あなたがイベントをトリガーしているか表示されませんが。 whileループがスレッドをブロックする可能性はありますか?別のスレッドからイベントをトリガする必要があります。 100%稼働している間は使用しないでください。リスナーはキューに追加することができ、アイテムがキューに追加されるとログに記録することができます。 –
データはFirebaseから非同期にロードされます。 (通常、同期の)関数から返すことはできません。 https://stackoverflow.com/questions/33203379/setting-singleton-property-value-in-firebase-listener –
を参照して、メインスレッドがリスナートリガに十分な時間待機するようにすることをお勧めしますか?私はすでにこのソリューションを試してみましたが、最初にトレーニングをしませんでしたが、関数が呼び出されたときにnullが2回目にNULLになっています。 –