Firebase 侦听器在 Java(Android) 中被阻止

Posted

技术标签:

【中文标题】Firebase 侦听器在 Java(Android) 中被阻止【英文标题】:Firebase listener is blocked in Java(Android) 【发布时间】:2014-04-14 20:15:26 【问题描述】:

我有一个简单的onChildAdded 侦听器集,但它似乎不起作用:

listRef.addChildEventListener(new ChildEventListener() 
    @Override
    public void onChildAdded(DataSnapshot snapshot,
            String previousChildName) 

        Log.d("DEBUG","A child has been added!");
        // Do stuff...

    
    // Other unimplemented methods for ChildEventListener here...
);

while(true);

我正在向 listRef 添加孩子,但没有任何反应。

while(true) 行是为了演示我的问题,即处理程序只能在其他所有操作完成后才能触发!在这种情况下,它永远不会。当我删除此行时,它会起作用。

我认为这是设计使然。有没有办法让它在这些情况下工作,不管后面发生什么?

谢谢

【问题讨论】:

【参考方案1】:

while(true) 将永久阻止线程接收事件,因为 android 客户端使用主线程发布事件。

可以设置不同的线程通过Config.setEventTarget()接收事件

在这种情况下,EventTarget 被传递给 Runnable 的实例,它负责运行以接收事件。

【讨论】:

以上是关于Firebase 侦听器在 Java(Android) 中被阻止的主要内容,如果未能解决你的问题,请参考以下文章

Firebase:Flutter:避免事务崩溃 CloudFirestorePlugin.java:613 : .then() vs async/await

在上传完成之前调用 Firebase Storage onSuccess

关闭应用程序时将 Firebase 侦听器保留在内存中

删除/关闭 Firebase 侦听器

在 Firebase 侦听器中设置 Singleton 属性值

何时在 tableView 单元中分离 firebase 侦听器?