2017-10-15 68 views
0

使用火力,我添加一個監聽到節點「mReference」,其可以在任何時間改變的值。當我的應用程序打開或最近關閉時,偵聽器工作。如果應用程序已關閉很長一段時間(〜天),則偵聽器的onDataChange不會觸發。 Firebase數據庫偵聽器是否會在一段時間後自動分離或因特定事件而自動分離?Firebase數據庫偵聽器是否會自動分離並導致它?

ValueEventListener listener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

     Map map = dataSnapshot.getValue(); 
     // ... 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

     // ... 
    } 
}; 
mReference.addValueEventListener(listener); 
+1

監聽器永遠不會自動由火力地堡客戶端分離。我的第一個猜測是Android關閉了套接字。我能想到的唯一的辦法搞清楚,如果這是實際發生的沖刷logcat的輸出,之後可能[啓用調試日誌記錄的客戶端火力地堡(https://firebase.google.com/docs/reference/android/com /google/firebase/database/FirebaseDatabase.html#setLogLevel(com.google.firebase.database.Logger.Level))。 –

回答

2

當應用程序關閉時,您無法依賴Android應用程序內部的任何Firebase偵聽器來持續運行。添加監聽者的服務將無法工作或者是因爲最近的Android版本將限制在服務可以運行(參見關於打盹模式的文檔,以及更嚴格的奧利奧加限制)。

如果你需要你的應用程序時,某些活動數據庫時所採取的行動,以解決一個方法是使用一個或多個火力地堡實時數據庫觸發器來識別數據庫中的作用;在觸發器內,您可以使用Firebase雲消息傳遞(FCM)將消息發送到您的設備。

的數據庫觸發器運行火力地堡的服務器上,不需要你的應用程序被激活。 FCM可以配置爲「喚醒」您的應用程序,以便它可以採取適當的操作; FCM在打盹模式和最近對應用背景活動的其他限制方面扮演着很好的角色。

相關問題