Ark*_*rka 6 java android firebase rx-java
我有这个代码库,我设置了一个值.在脱机模式下,它成功写入但未调用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();
}
});
Run Code Online (Sandbox Code Playgroud)
回调永远不会被调用.但写得很好.
在另一种情况下,即使在取消订阅onDestroy使用后CompositeSubscription,即使片段未运行,当值写入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);
Run Code Online (Sandbox Code Playgroud)
在onDestroy()我打电话mCompositeSubscription.unsubscribe();,但订阅者稍后被调用.
当写入已提交到 Firebase 服务器上的数据库时,将调用写入操作的完成侦听器。当您处于离线状态时,这种情况就不会发生。
无法取消订阅完成侦听器。如果写入操作完成时侦听器仍然存在,则会调用它。
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |