离开Android应用程序时关闭Firebase数据库连接



我制作了一个Android应用程序,它从Firebase数据库接收实时数据。在我的主要活动中,用户必须使用电子邮件和密码登录,并通过成功打开一个新的活动,该活动接收数据。

似乎是,当用户离开我的应用程序时,Firebase连接仍然建立。这对电池不好。

如何管理关闭和重新打开应用程序的连接?我想我需要用onPause()onResume()。我发现了一些像goOffline(),但我不能在新的Firebase找到这个方法。

是的,您可以在onDestroy()上使用onPause(), onStop()等活动生命周期方法来关闭您的连接。

此外,Firebase似乎仍然有一个goOffline()方法- https://www.firebase.com/docs/android/api/#firebase_goOffline.

使用goOffline()goOnLine()方法的另一种选择是在不再需要ValueEventListenersChildEventListeners时删除它们。我使用SDK 3的经验。

我最近在我的应用程序中添加了Firebase数据库,但注意到偶尔会有高电池使用量,这似乎与我的应用程序保持无线电活跃有关(无线电在10小时内活跃1小时30分钟,但应用程序使用大约5分钟)。

我相信这是链接到Firebase数据库,因为我已经禁用了应用内购买广播接收器,这是唯一的其他网络元素。我没有任何开放的监听器(我使用的是单值事件),但是有些事务是可变的,因此有可能其中一个事务未能完成,并且会定期重新尝试。数据库持久化关闭。

我目前正在测试以下简单的添加到暂停/恢复(在答案中得到一些代码:-)):

@Override
protected void onResume()
{
    super.onResume();
    if (FirebaseDatabase.getInstance() != null)
    {
        FirebaseDatabase.getInstance().goOnline();
    }
}
@Override
public void onPause() {
    super.onPause();
    if(FirebaseDatabase.getInstance()!=null)
    {
        FirebaseDatabase.getInstance().goOffline();
    }
}

到目前为止,一切顺利。**需要注意的主要事情是切换活动,要求您在使用Firebase的每个应用程序中都有此功能(我有一个登录活动,因为它正在从数据库读取用户名)**

5/12/16 -经过几周的测试后更新。昨天,高电量又出现了。我主要是在Lollipop上进行测试的,有很多人抱怨说,收音机是为其他应用打开的。其他在Android M上测试我的应用的人没有报告任何问题,所以这可能是一个棒棒糖问题。我将继续测试,这次尝试删除不必要的事务,看看这是否有帮助……

最新更新