[英]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.