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;
}
上面是一个验证用户的函数。我想返回true if (userIds.contains(userId))
否则为false。但authenticateUser总是返回false。onDataChange调用突发
在这个答案中解释了监听器回调的异步特性:http://stackoverflow.com/a/41409942/4815718 –