繁体   English   中英

Firebase离线无setValue上的CompletionListener

[英]Firebase offline no CompletionListener on setValue

我在此代码库中设置了一个值。 在脱机模式下,它成功写入,但未调用CompletionListener.onComplete回调函数。

newOrderRef.setValue(order, (firebaseError, firebase) -> {
            if (firebaseError != null) {
                Timber.e(firebaseError.toException(), "Order create failed, id: %s", order.getOrderId());
                subscriber.onError(firebaseError.toException());

            } else {
                Timber.i("Order created, id: %s", order.getOrderId());
                newOrderRef.setPriority(0 - timestamp);
                subscriber.onNext(firebase.getKey());
                subscriber.onCompleted();
            }
        });

回调永远不会被调用。 但是写得很好。

在另一种情况下,即使使用CompositeSubscription取消订阅onDestroy后,即使该片段未运行,该值仍要写入Firebase服务器时,也会调用订阅方。

这是正确的行为吗?

      Subscription orderSubscription = OrderManager.createOrder(order)
                        .subscribe(s -> {
                            fabShowSuccess();
                            showSnackbar("onnext Order created " + order.getOrderId());
                        }, throwable -> {
                            showSnackbar("Order failed. Make sure your are connected to internet.");
                            fabShowFailed();
                        }, () -> {
                            fabShowSuccess();
                            showSnackbar("Order created " + order.getOrderId());
                        });
                mCompositeSubscription.add(orderSubscription);

onDestroy()我调用mCompositeSubscription.unsubscribe(); ,但订阅者稍后会被呼叫。

当写入已提交到Firebase服务器上的数据库时,将调用用于写入操作的完成侦听器。 离线时不会发生这种情况。

无法取消订阅完成侦听器。 如果写操作完成时侦听器仍然存在,则会调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM