我最近迁移到了Firebase。我已经阅读了Firebase Android api文档,通过JSON从数据库检索数据。有方法onDataChange(DataSnapshot snapshot)
来检索数据,每当数据库中的数据发生变化,但我可以找到如何检索数据,即使数据库没有变化。从android中的firebase数据库检索数据
例如: - 当用户登录到我的应用程序时,我想要检索存储在唯一ID节点下的数据。如果我需要,如何随时从Firebase数据库检索数据?
我最近迁移到了Firebase。我已经阅读了Firebase Android api文档,通过JSON从数据库检索数据。有方法onDataChange(DataSnapshot snapshot)
来检索数据,每当数据库中的数据发生变化,但我可以找到如何检索数据,即使数据库没有变化。从android中的firebase数据库检索数据
例如: - 当用户登录到我的应用程序时,我想要检索存储在唯一ID节点下的数据。如果我需要,如何随时从Firebase数据库检索数据?
从Firebase guide on reading data:
与初始数据,并再次每次数据更改触发[该
onDataChange()
方法]一次。
我强烈建议您阅读Firebase guide for Android programming端到端。它会回答您在开始使用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();
}
});
}
}
如果你想检索火力数据
,只需创建所需火力路径的参考对象。 Firebase ref =新的Firebase(路径); –