我最近遷移到了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(路徑); –