我正在使用Firebase制作一个Android应用,并且在我的一项活动中,我需要先从Firebase读取数据,然后再执行其他操作。为此,我使用的是ValueEventListener
。问题是,Android先运行其余代码,然后在侦听器的onDataChange()
方法中获取结果/运行代码。我之所以知道这一点,是因为我使用Logs进行了调试,实际上结果在其余代码运行几秒钟后到达。
我已经看到了一些人的示例,这些人在查询后在另一个方法中编写要运行的代码,然后在onDataChange()
中调用该方法。我尝试这样做,还尝试将侦听器移至另一个类并调用该方法,甚至尝试使用变量控制代码流,但没有任何效果。关于我该怎么办的任何想法?
顺便说一句,我不知道这是否不会以任何方式影响,但是,我依赖Firebase结果的一段代码在onStart()
方法内部,因此我想Android将始终运行{{1 }},然后从侦听器获取结果。
谢谢!
答案 0 :(得分:2)
ValueEventListener是异步的,因此不会先运行。相反,请尝试从onDataChange()
函数内部调用一个函数,该函数执行与侦听器所需的功能。