2017-04-14 44 views
2

由於我的應用程序的流量,我不得不在每次用戶打開應用程序時在同一個ref上調用keepSynced(true)。我在想,如果這樣做不好,或者Firebase只是忽略同一個參考文獻中多餘的keepSynced()調用。在同一個ref上多次調用keepSynced有什麼缺點?

如果您打電話給keepSynced(true)的參考號碼keepSynced(true)如何?是否也被忽略?

我真的很期待一個確定的答案。

+0

你的應用程序包含了什麼類型的EventListener?你介意用一些代碼更新你的原始文章。這可以幫助我自己或其他人提供更詳細的答案。謝謝! –

回答

2

keeySynced對參考文獻給出的路徑開啓或關閉。沒有「多個keepSynced」狀態 - 在SDK內部實現將毫無意義,因爲這樣做沒有優勢。

+0

好吧,我只是想知道它不訂閱兩次路徑 – MarksCode

+0

如果確實如此,我相信它會被記錄下來。但就像我說的那樣,沒有理由以這種方式實現它,所以它不會。 –

2

您只需撥打keepSynced(true)一次。我實現它的方式是擴展Application類。

public class GlobalApp extends Application { 

@Override 
public void onCreate() { 
    super.onCreate(); 

    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    FirebaseDatabase.getInstance().getReference().keepSynced(true); 

    } 
} 
1

調用節點上keepSynced(true)確保每當有到數據庫服務器的連接的火力地堡數據庫客戶端將同步節點。當沒有這種連接時,沒有內置API來保持節點同步。如果我們啓用脫機支持

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

如果我們設置keepSynced(真),那麼只要用戶的互聯網連接上網,它將更新它的節點數據

0
keepSynced(true); 

將是有益的。更多解釋可參閱here

例如:如果其他用戶刪除該節點,則比另一個用戶離線。如果我們沒有設置keepSynced(true),離線用戶數據仍然存在。 在某些情況下,它會關閉一個部隊。

所以我的結論是,要麼我們不支持離線數據庫, 或支持離線,但與keepSynced(真)。還有另一種選擇,我們可以選擇何時保持正確或錯誤。