我不是Rx方面的专家,如果这是一个小问题,抱歉。我正在执行轮询操作,必须等待更新,并且为此创建了Rx Observable;但是,我从不调用onComplete。但是在onDestroy中,我取消了订阅。请看下面的代码。
@Reusable
class PollingExample @Inject constructor() {
var itemObservable: Observable<List<Item>>
private set
private lateinit var itemObservableEmitter: WeakReference<ObservableEmitter<List<Item>>>
init {
itemObservable = Observable.create { e -> itemObservableEmitter = WeakReference(e) }
}
fun submitData(items: List<Item>) {
itemObservableEmitter.get()?.onNext(items)
}
}
做这样的事情是否合法
经过一些搜索,我认为只要我不想调用onError()
或onComplete()
,最好使用此库https://github.com/JakeWharton/RxRelay,该库可确保一切都将继续工作而不必担心意外触发终端状态] >