2016-03-24 112 views
0

我已經能夠成功地上傳和使用蒞臨指導,從我的火力回購刪除數據: https://www.firebase.com/docs/android/guide/saving-data.html火力地堡在Android上沒有檢索數據

但是,如果我嘗試和檢索這裏使用的火力地堡引導數據: https://www.firebase.com/docs/android/guide/retrieving-data.html

應用程序活動只是掛起 - 沒有回調onDataChange或onCancel。我正在使用已工作,直到在引導這一點(在我的活動onCreate()方法)的例子確切的代碼:

Firebase ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts"); 

ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     System.out.println(snapshot.getValue()); 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage()); 
     } 
    }); 

有一個在例如URL數據,所以應該工作。我正在運行Android 4.0.3的手機上運行。

我在做什麼錯?

感謝, 里茲

編輯:我想在我的三星注4運行的是Android 5.1.1和火力地堡工作正常。我的華爲運行Android 4.0.3不起作用。與Android版本有什麼關係?

編輯2:所以原來下面的答案是正確的。我在其中一個幫助程序類中找到了一小段代碼,它正在等待某些內容時暫停該線程。我重寫它是真正的異步,它解決了這個問題。非常感謝 - 我已經接受了答案。

+0

有一個** **非常好的機會,'CallBackSignaler'僅僅是阻塞主線程和掛您的應用程序。請參閱[我對此問題的回答](http://stackoverflow.com/a/33204705/209103)。 –

+0

請參閱下面的答案。我編輯了這個問題,刪除它是一個分心。 – chdryra

+0

我已經接受了答案,因爲你畢竟 - 看到我的編輯 – chdryra

回答

1

同步來自Firebase的數據是異步操作。試圖等待這些數據不是一個好主意。

您的CallbackSignaler阻止onDataChange()被呼叫。如果您刪除信號發送者,您會看到數據已加載,onDataChange()被調用並且值被記錄。

見我回答這個問題:Setting Singleton property value in Firebase Listener

+0

謝謝。這不是信號發送器,因爲我只在一次意識到它掛起來檢查回調而無需訴諸調試器。我的所有處理持久性的類都是通過設計異步的 - 回調信號只是這種問題的調試工具。 – chdryra

+0

您的設備是否連接到互聯網?檢查飛行模式或[監視'.info/connected'](https://www.firebase.com/docs/android/guide/offline-capabilities.html#section-connection-state) –

+0

我已經創建了一個新的清理項目在Android Studio中只有MainActivity中的Firebase示例。它現在似乎適用於兩個手機。我不確定發生了什麼,但是當我在加載數據時首先啓動它時,主應用程序中會出現一堆異步事件。我想知道是否有與最初給出的答案有關的一些線程問題...... – chdryra