【发布时间】:2022-02-06 13:54:58
【问题描述】:
我将我的安卓应用程序连接到了谷歌的实时数据库。 (这是给学校的,我对所有这些应用程序开发的东西都非常非常陌生。)我想知道为什么我的 log.d() 方法以错误的顺序将它的内容输出到 logcat。我不认为这是一个大问题,我可能可以解决它,但我只是好奇它为什么会这样执行,或者我的代码是否有问题我必须修复。
常驻页面:
public class ResidentPage extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
....
basicReadWrite();
MethodsFromOtherClass.output();
return view;
}
...
public void basicReadWrite(){
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("second message");
myRef.setValue("Hello again, World!");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
Log.d("ResidentPage", "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
Log.w("ResidentPage", "Failed to read value.", error.toException());
}
});
}
}
其他类的方法:
public class MethodsFromOtherClass {
public static void output(){
Log.d("ResidentPage", "Called from another class");
}
}
Logcat:
D/ResidentPage: Called from another class
D/ResidentPage: Value is: Hello again, World!
【问题讨论】:
-
这是正常行为。 Firebase API 是异步的。因此,请检查副本以查看如何使用回调解决此问题。您可能也有兴趣阅读这篇文章,How to read data from Firebase Realtime Database using get()?。
标签: android android-studio firebase-realtime-database