0
private boolean authenticateUser(final String role, final String userId) {
DatabaseReference roleReference = FirebaseDatabase.getInstance().getReference().child("role").child(role);
roleReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, String> map = (HashMap<String, String>) dataSnapshot.getValue();
if (map != null) {
Set<String> userIds = map.keySet();
if (userIds.contains(userId))
authenticationResult = true;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return authenticationResult;
}
上記は、ユーザーを認証する機能です。私は真実を返すしたいif (userIds.contains(userId))
それ以外はfalseです。しかし、authenticateUserは常にfalseを返します。onDataChange突然呼び出し
リスナーコールバックの非同期性は、この回答で説明されています。http://stackoverflow.com/a/41409942/4815718 –