1
我想从里面火力地堡取数据,以检查该用户是否在数据库中存在,但有我解决不了的问题,听众触发迟到,这是我的代码: -获取数据
- 如果我删除while循环,我不能获取对象快速
如果我继续while循环我进入无限循环,我不知道为什么 为什么听者不会触发
DataSnapshot fetched ; public boolean user_exist(final String user) throws Exception { users.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { fetched = dataSnapshot ; } @Override public void onCancelled(DatabaseError databaseError) { } }); while (fetched == null){ Log.e("dbController","not fetched yet"); } return fetched.hasChild(user); }
你不告诉你是如何触发事件。 while循环阻塞线程有没有机会?您需要从另一个线程触发事件。并且不要用一段时间以100%运行。您的监听器可以添加到队列中,而且您可以在项目添加到队列时记录日志。 –
数据是从Firebase异步加载的。你不能从(常规,同步)函数中返回它。见https://stackoverflow.com/questions/33203379/setting-singleton-property-value-in-firebase-listener –
所以你建议让主线程等待足够的时间,听者触发?我已经试过这个解决方案,但没有锻炼第一次我打电话功能抓取是空的第二次它不是空 –