我最近迁移到了Firebase。我已经通过Firebase Android api文档通过JSON从数据库中检索数据。有方法onDataChange(DataSnapshot snapshot)
可以在数据库中的数据发生变化时检索数据,但即使数据库中没有变化,我也能找到如何检索数据。
例如: - 当用户登录我的应用程序时,我希望检索存储在唯一ID节点下的数据。如果需要,如何随时从Firebase数据库检索数据?
答案 0 :(得分:2)
来自Firebase guide on reading data:
[
onDataChange()
方法]使用初始数据触发一次,每次数据更改时再次触发。
我强烈建议您阅读Firebase guide for Android programming端到端。当您开始使用Firebase时,它会回答您可能遇到的许多问题。
答案 1 :(得分:0)
Firebase读写数据库指南行: https://firebase.google.com/docs/database/android/read-and-write
public class NavigationActivity extends AppCompatActivity{
private DatabaseReference mDatabase;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initializeAuthListener();
mDatabase = FirebaseDatabase.getInstance().getReference();
}
private void initializeAuthListener() {
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getInstance().getCurrentUser();
try {
if (firebaseAuth != null) {
loadUserDetails();
Log.d("@@@@", "thread:signed_in:" + firebaseUser.getUid());
} else {
Log.d("@@@@", "thread:signed_out");
Intent login = new Intent(NavigationActivity.this, LoginActivity.class);
startActivity(login);
finish();
}
}catch (Exception e){
Intent login = new Intent(NavigationActivity.this, LoginActivity.class);
startActivity(login);
finish();
}
}
};
mAuth.addAuthStateListener(mAuthListener);
}
private void loadUserDetails() {
DatabaseReference userReference = mDatabase
.child("users").child(firebaseUser.getUid());
// displayUserDetails(userReference);
userReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
user = dataSnapshot.getValue(User.class);
tv_user_name.setText(user.getDisplayName());
tv_user_email_nav.setText(user.getEmail());
Glide.with(NavigationActivity.this)
.load(user.getPhotoUrl())
.placeholder(R.mipmap.profile)
.centerCrop()
.dontAnimate()
.bitmapTransform(new CropCircleTransformation(NavigationActivity.this))
.into(iv_user_image);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Toast.makeText(ThreadActivity.this, R.string.error_loading_user, Toast.LENGTH_SHORT).show();
// finish();
}
});
}
}