Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase持久化模式从不同步到服务器(Android)_Android_Firebase - Fatal编程技术网

Firebase持久化模式从不同步到服务器(Android)

Firebase持久化模式从不同步到服务器(Android),android,firebase,Android,Firebase,我正在使用Firebase开发一个新的Android应用程序(第一次使用Firebase)。我选择使用持久化模式,因为它更适合我的应用程序 我的问题是,应用程序不同步数据到服务器,因此,其他设备,即使用于存储数据的设备是在线的 代码很好(据我所知),如果禁用持久化模式,一切正常,但可以肯定的是,设备上没有缓存数据 这在不同的设备和模拟器中也会发生,奇怪的是,有时候设备会同步,然后又会无缘无故地停止同步 我很欣赏这里的任何建议 代码: 正在消息类中发送代码: //.... Firebase

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

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

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

我很欣赏这里的任何建议

代码:

正在消息类中发送代码:

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

我在两方面都做到了:

  • 如果您希望firebase server同步

    FirebaseDatabase.getInstance().goOnline();
    
    FirebaseDatabase.getInstance().goOffline();
    
  • 如果您不想firebase server同步

    FirebaseDatabase.getInstance().goOnline();
    
    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();
        }
    }
    

    希望这能对您有所帮助。

    我对iOS也有同样的问题。你曾经解决过这个问题吗?还不是很不幸,我现在禁用了离线模式,但是我仍然处于开发模式。