Firebase持久性模式永远不会同步到服务器(Android)

时间:2016-02-26 01:01:48

标签: android firebase

我正在使用Firebase开发一个新的Android应用程序(第一次使用Firebase)。我选择使用持久模式,因为它更适合我的应用程序。
我的问题是应用程序没有将数据同步到服务器,因此,其他设备,即使用于存储数据的设备是在线!!

代码很好(据我所知),如果我禁用持久性模式,一切正常,但我肯定没有设备上的缓存数据。

这也发生在不同的设备和模拟器中,奇怪的是有时设备会同步,然后无缘无故再次停止同步!

我感谢此处提出的任何建议。

代码:

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

在Message class中发送代码:

//....
    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();
            }
//...

1 个答案:

答案 0 :(得分:0)

我做过两种方式:

  1. 如果您希望 同步 firebase服务器

    FirebaseDatabase.getInstance().goOnline();
    
  2. 如果您 同步 firebase服务器

    FirebaseDatabase.getInstance().goOffline();
    
  3. 完整代码:

    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();
        }
    }
    

    希望这会对你有所帮助。