我正在用Firebase制作一个Android应用程序,在我的一项活动中,我需要在做任何其他事情之前从Firebase读取数据。为此,我使用ValueEventListener
。问题是,Android首先运行的其余代码,然后在侦听器的onDataChange()
方法中获得结果/运行代码。我之所以知道这一点,是因为我使用Logs进行了调试,事实上,结果是在其余代码运行几秒钟后到达的。
我看到过这样的例子:人们在另一个方法中编写查询后要运行的代码,然后在onDataChange()
中调用该方法。我尝试过这样做,也尝试过将侦听器移动到另一个类并调用该方法,甚至尝试过用变量控制代码流,但都没有成功。有什么我能做的吗?
顺便说一句,我不知道这是否会产生任何影响,但是,我的一段取决于Firebase结果的代码在onStart()
方法中,所以我认为Android总是先运行onStart()
,然后从侦听器获得结果。
谢谢!
ValueEventListeners是异步的,因此它们不会首先运行。相反,请尝试从onDataChange()
函数内部调用一个函数,该函数可以对侦听器执行您想要执行的操作。