检查连接后Firebase延迟

时间:2018-02-22 22:43:54

标签: java android firebase firebase-realtime-database

方法检查连接是否有一些延迟。也就是说,如果我们在运行应用程序时连接到互联网,我们将首先收到消息,表示我们“未连接”,毫秒后将收到我们“已连接”的正确答案。在我的情况下这种延迟是至关重要的,因为我想通知用户他必须打开互联网只需一次从firebase数据库上传数据,但如果它已经打开,则该消息看起来很傻。有什么建议?

Logcat消息:

02-22 22:39:09.562 15945-15945/com.example.robert.aplikacjaitp D/BaseActivity: onDataChange on MainActivity: not connected
02-22 22:39:10.480 15945-15945/com.example.robert.aplikacjaitp D/BaseActivity: onDataChange on MainActivity: connected

在onCreate中运行的方法
[旧版]:

void isConnected(){

    Firebase.setAndroidContext(this);
    connectedRef = new Firebase("https://testowa-baza-59b76.firebaseio.com/.info/connected");
    application = new Application();

     mFacultiesReference = FirebaseDatabase.getInstance().getReference(Constants.KIERUNKI);
     mFacultiesReference.keepSynced(true);

    connectedRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
        @Override
        public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {
            boolean connected = dataSnapshot.getValue(Boolean.class);
            if (connected) {
                application.unregisterActivityLifecycleCallbacks(new FirebaseDatabaseConnectionHandler());
                Log.d(TAG, "onDataChange on MainActivity: connected");
            } else {
                Log.d(TAG, "onDataChange on MainActivity: not connected");
                dataProcessingAlert();
            }
        }
        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });
}

[新版本]已升级的Firebase SDK

 void isConnected(){

     connectedRef = FirebaseDatabase.getInstance().getReferenceFromUrl("https://testowa-baza-59b76.firebaseio.com/.info/connected");
     application = new Application();

     mFacultiesReference = FirebaseDatabase.getInstance().getReference(Constants.KIERUNKI);
     mFacultiesReference.keepSynced(true);

     connectedRef.addValueEventListener(new ValueEventListener() {
         @Override
         public void onDataChange(DataSnapshot dataSnapshot) {
             boolean connected = dataSnapshot.getValue(Boolean.class);
             if (connected) {
                 application.unregisterActivityLifecycleCallbacks(new FirebaseDatabaseConnectionHandler());
                 Log.d(TAG, "onDataChange on MainActivity: connected");
             } else {
                 Log.d(TAG, "onDataChange on MainActivity: not connected");
                 dataProcessingAlert();
             }
         }

         @Override
         public void onCancelled(DatabaseError databaseError) {

         }
     });
}

0 个答案:

没有答案