Firebase数据库侦听器是否会自动分离并导致它?
问题描述:
使用火力,我添加一个监听到节点“mReference”,其可以在任何时间改变的值。当我的应用程序打开或最近关闭时,侦听器工作。如果应用程序已关闭很长一段时间(〜天),则侦听器的onDataChange不会触发。 Firebase数据库侦听器是否会在一段时间后自动分离或因特定事件而自动分离?Firebase数据库侦听器是否会自动分离并导致它?
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map map = dataSnapshot.getValue();
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// ...
}
};
mReference.addValueEventListener(listener);
答
当应用程序关闭时,您无法依赖Android应用程序内部的任何Firebase侦听器来持续运行。添加监听者的服务将无法工作或者是因为最近的Android版本将限制在服务可以运行(参见关于打盹模式的文档,以及更严格的奥利奥加限制)。
如果你需要你的应用程序时,某些活动数据库时所采取的行动,以解决一个方法是使用一个或多个火力地堡实时数据库触发器来识别数据库中的作用;在触发器内,您可以使用Firebase云消息传递(FCM)将消息发送到您的设备。
的数据库触发器运行火力地堡的服务器上,不需要你的应用程序被激活。 FCM可以配置为“唤醒”您的应用程序,以便它可以采取适当的操作; FCM在打盹模式和最近对应用背景活动的其他限制方面扮演着很好的角色。
监听器永远不会自动由火力地堡客户端分离。我的第一个猜测是Android关闭了套接字。我能想到的唯一的办法搞清楚,如果这是实际发生的冲刷logcat的输出,之后可能[启用调试日志记录的客户端火力地堡(https://firebase.google.com/docs/reference/android/com /google/firebase/database/FirebaseDatabase.html#setLogLevel(com.google.firebase.database.Logger.Level))。 –