代码之家  ›  专栏  ›  技术社区  ›  Ryan Pierce

Firebase数据库侦听器是否会自动分离?是什么原因造成的?

  •  0
  • Ryan Pierce  · 技术社区  · 7 年前

    使用firebase,我向节点“mReference”添加了一个监听器,该监听器可能随时更改值。当我的应用程序打开或最近关闭时,侦听器工作。如果应用程序关闭了很长一段时间(~天),则侦听器的onDataChange不会启动。Firebase数据库侦听器是否在一段时间后或由于特定事件自动分离?

    ValueEventListener listener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
    
            Map map = dataSnapshot.getValue();
            // ...
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
    
            // ...
        }
    };
    mReference.addValueEventListener(listener);
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Scott Kronheim    7 年前

    当应用程序关闭时,你不能依赖Android应用程序中的任何Firebase侦听器来持续运行。将监听器添加到服务中也不会起作用,因为Android的最新版本将限制服务的运行时间(请参阅有关Doze模式的文档,以及Oreo中添加的更严格的限制)。

    如果你需要你的应用在数据库中发生某些活动时采取行动,一种解决方法是使用一个或多个Firebase实时数据库触发器来识别数据库中的行动;在触发器中,您可以使用Firebase Cloud Messaging(FCM)向设备发送消息。