作者:大眼睁睁 | 来源:互联网 | 2023-02-07 04:06
1> Lewis McGear..:
从这个问题中可以想到两件事,一个关于Firebase监听器,第二个关于删除多余的代码.
Firebase监听器的一个基本要素是它们是异步的,这意味着您的代码在执行下一行之前不会等待结果.请查看此框架代码中的注释:
userRef.child("id").
addSingleValueEventListener(new ValueEventListener() {
@Override public void onDataChange (DataSnapshot dataSnapshot){
// code here does not get executed straight away,
// it gets executed whenever data is received back from the remote database
}
@Override public void onCancelled (DatabaseError databaseError){
}
});
// if you have a line of code here immediately after adding the listener
// the onDataChange code *won't have run*. You go straight to these lines
// of code, the onDataChange method will run whenever it's ready.
所以这意味着如果你想对你所获得的数据做一些事情,onDataChange
你应该把那些代码放在onDataChange
方法中(或者从那里调用一些其他方法,或者在数据交付之后以其他方式运行该代码).
关于第二部分,稍微更多的Firebasey检查int是否存在并获取值的方法是:
@Override public void onDataChange (DataSnapshot dataSnapshot){
if (dataSnapshot.exists()) {
id = dataSnapshot.getValue(Integer.class);
} else {
id = 1;
}
}