【问题标题】:Firebase high background data usage on androidAndroid上的Firebase高后台数据使用
【发布时间】:2016-03-20 17:45:03
【问题描述】:

我正在将 firebase 用于学校仪表板应用程序。该应用程序是使用 android 构建的。它通过 google 凭据登录到 firebase。在 firebase 上启用了磁盘持久性。该应用程序没有使用其他服务或连接。构建中设置的 Firebase 版本是 'com.firebase:firebase-client-android:2.4.0+'

我打开了应用程序 - 它登录并获取数据 - 然后将其置于后台。数据使用情况如下 -

前台数据使用量稳定在 - 38.87kb

后台数据使用量每隔几分钟就会增加 - 2.53kb、2.94kb、11.49kb、11.9kb、12.18kb、12.59kb、13.90kb、67kb、92kb。它每分钟消耗大约 1.5kb 的数据。

我已确保所有 firebase 侦听器在暂停时都断开连接。为什么应用后台数据使用量会随着时间的推移不断增加?

【问题讨论】:

    标签: android firebase


    【解决方案1】:

    Firebase 客户端与其服务器保持开放的网络连接。作为保持此连接的一部分,客户端和服务器偶尔会交换保持活动消息。这些可能会使用一些内存,应该(大部分)在垃圾回收时回收。

    顺便说一句,您可能想要升级到最新版本的 Firebase SDK for Android。现在是 2.5.2 版。

    【讨论】:

    • 问题是消息似乎交换得非常频繁,只要应用程序在后台,消息就会继续,与时间流逝无关。有没有办法减少这种情况,也许是通过 config.或者,在一段时间不活动后关闭连接。在一个月的时间里,这导致来自应用程序的许多 MB 的数据使用量在后台,而在同一时间段内前台的数据使用量要少得多 - 这是来自 beta 测试的应用程序的一些实际数据使用量 - Tablet1 -前台数据使用量 413KB,后台数据使用量 4.30MB。
    • 问题不在于内存使用,而在于网络和电池使用,因为连接在后台保持打开状态。
    【解决方案2】:

    我刚刚在 Firebase 类上找到了 2 个方法 - goOffline() 和 goOnline(),这可能有助于我减少后台数据的使用。我将在应用程序中的所有活动的 onPause 和 onResume 中尝试它们。

    【讨论】:

      【解决方案3】:

      我为减少数据使用量所做的工作是创建一个服务,该服务维护当 firebase 需要在线时的引用计数状态,并根据该状态使用 goOnline()/goOffline():

      class OnlineTracker {
         void onlineNeeded(); //Increase reference count
         void releaseOnlineNeeded(); //Decrease reference count
      }
      

      当您需要执行需要 Firebase 在线的操作时,您可以这样做:

      try {
          OnlineTracker.onlineNeeded();
          ...
          Firebase operations that need online status
          ...
      } finally {
          OnlineTracker.releaseOnline()
      }
      

      这样当OnlineTracker的引用计数>0时调用goOnline(),返回0时调用goOffline();

      为防止切换过多,您还可以延迟下线并等待一段时间,看看是否会在很短的时间内需要在线状态。

      See this gist for complete real code

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-19
        相关资源
        最近更新 更多