我决定在这里发布一个答案,也许其他用户会觉得它很有用。所以如果你的密码
subscribe:onNext
多次调用而没有
onNext
命令已由观察者发送,这意味着您多次订阅了观察者。
dispose(bag:)
当释放dispose包时,将释放任何订阅服务器,但如果该包仍然存在于对象上,则不会释放订阅服务器,此外,对于UI订阅服务器(在视图控制器、视图等中),最好使用
week self
内部
onNext:/onError/etc
要“强制”处理袋子,有三种选择:
-
如果你使用
DisposeBag
这就足够重新初始化这个包了(
bag = DisposeBag()
).
-
CompositeDisposable
这就像一本字典,这种袋子给你一个更精确的控制什么你可以处置,每当你添加一个处置袋(
bag.insert
,你会得到一个一次性的钥匙,你可以打电话
remove
-
最后一个选项,有时更像丑陋的选项,是保留对一次性的引用并直接调用dispose,例如:
var myDisposable: Disposable? = nil
......
fun iWantToSubscribe() {
myDispsable?.dispose()
myDisposable = myObserver.subscribe(onNext: {})
}