2016-02-26 63 views
3

我正在使用Firebase開發新的Android應用(首次使用Firebase)。我選擇使用持久模式,因爲它更適合我的應用程序。
我的問題是,該應用程序不會同步數據到服務器,因此,其他設備,即使用於存儲數據的設備在線!Firebase持續模式永遠不會同步到服務器(Android)

代碼是好的(據我所知),如果我禁用持久模式,一切工作正常,但肯定我沒有設備上的緩存數據。

這種情況發生在不同的設備和仿真器上,奇怪的是有時設備會同步,然後再次停止同步,無緣無故!

我很欣賞這裏的任何建議。

代碼:

My App class: 
//.... 
     Firebase.setAndroidContext(this); 
     Firebase.getDefaultConfig().setPersistenceEnabled(true); 
     Firebase.getDefaultConfig().setLogLevel(Logger.Level.DEBUG); 
//... 

在發送消息類代碼:

//.... 
    Firebase senderRef = new Firebase(MyApp.FirebaseURL).child("Messages").child(sender_Id); 
    senderRef.keepSynced(true); 
    senderRef.push().setValue(this, null); 
//.... 

接收代碼:

//... 

     Firebase ref = new Firebase(MyApp.FirebaseURL).child("Messages").child(sender_Id); 
     Query query = ref.orderByKey(); 

     query.limitToLast(MAX_CHAT_MESSAGES_TO_SHOW); 
     query.keepSynced(true); 

     query.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

       Log.d("Firebase", "Message Child Added"); 
       Message message = dataSnapshot.getValue(Message.class); 
       mMessages.add(0, message); 
       mAdapter.notifyDataSetChanged(); 
      } 
//... 
+0

我遇到與iOS相同的問題。你有沒有解決這個問題? –

+2

還不幸,我現在禁用了離線模式,但是我仍處於開發模式。 – Tamer

回答

0

我在這兩個方面都做:

  1. 如果同步火力服務器

    FirebaseDatabase.getInstance().goOnline(); 
    
  2. 如果不想同步火力服務器

    FirebaseDatabase.getInstance().goOffline(); 
    

全碼:

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

     /** 
     * User anyone function from below as required, 
     * Read comment proper 
     */ 

     // If you want to sync with firebase server 
     FirebaseDatabase.getInstance().goOnline(); 

     // If you do not want to sync with firebase server 
     FirebaseDatabase.getInstance().goOffline(); 
    } 
} 

希望這會幫助你。