即使在goOffline()和keepSynced(false)

时间:2017-11-24 04:06:53

标签: android firebase firebase-realtime-database

即使在goOffline()和keepSynced(false)之后,我的Firebase数据库仍然有轻微下载。

我只想获取一次数据。然后我将它保存到SharedPreferences。下次用户运行应用程序时,它将检查SharedPreferences中是否存在数据,如果确实存在,则无需再次从Firebase获取数据。

但是在Firebase信息中心中,我会在几个小时之后看到更多的下载量(例如10KB)。 如何完全关闭此Firebase?我错过了什么吗?

MainActivity:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ---- SOME PSEUDO CODE ----
        if (mySharedPreferences.has(theValue)) {
            //already has the value. 
            //No need to get from Firebase.
        }
        else { //doesn't have the value, so get it from Firebase.
            FirebaseDatabase.getInstance().goOnline(); //-->ONLINE

            DatabaseReference myRef = FirebaseDatabase.getInstance().getReference("someNode");
            myRef.child("datax").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    mySharedPreferences.set(theValue);
                    FirebaseDatabase.getInstance().goOffline(); //-->OFFLINE
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    FirebaseDatabase.getInstance().goOffline(); //-->OFFLINE
                }
            });
            myRef.keepSynced(false); //-->NOT SYNCYED
        }
    }

1 个答案:

答案 0 :(得分:1)

只要您使用数据库,就无法完全关闭Firebase。您在Firebase控制台中可以看到的是从所有来源收集的流量。即使您有活跃的侦听器或只有用户正在访问您的应用程序,所有流量都会记录在那里。即使Firebase控制台的使用也被视为使用情况,并在那里作为流量出现。正如Frank所说,要获得有关流量的更多详细信息视图,您需要启用调试日志记录并检查logcat中发生的情况。