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 –
所以你建議讓主線程等待足夠的時間,聽者觸發?我已經試過這個解決方案,但沒有鍛鍊第一次我打電話功能抓取是空的第二次它不是空 –