【发布时间】:2017-12-07 05:29:31
【问题描述】:
我的 Android 应用需要支持上传大文件,但我不希望用户等到上传完成。
通常,当我使用 Observable 时,我会在视图被销毁时为它调用 dispose()。
但是在上传的情况下,我无论如何都不能处理它,直到它完成。
所以我想试着喜欢这个,
private val compositeDisposable: CompositeDisposable = CompositeDisposable()
fun upload() {
val disposable = Observable.just(true).delay(20, TimeUnit.SECONDS).subscribe({
Log.d("=>", "Upload finished")
disposeUploader()
})
compositeDisposable.add(disposable)
}
fun disposeUploader() {
compositeDisposable.clear()
compositeDisposable.dispose()
}
但问题是 upload() 可能会被多次调用,因此第一个上传者将处理所有其他处理调用。
如果我不调用 dispose 会发生什么?或者完成后有什么方法可以自行处理?
【问题讨论】:
-
But in uploading case, I can not dispose it in any case until it finished.- 你能详细说明为什么不能在这里处理上传案例吗? -
因为在上传过程中,如果处理掉了observer,上传就会终止。
-
rxjava2 中的
.subscribe()不返回 Disposable,而是返回 void。你可能会混淆 rxjava1,它允许.subscribe()返回Subscription? -
@VinhNguyen
subscribe()does returnDisposablein RxJava2. -
@nhaarman 明白了,只有
subscribe(Observer<? super T> observer)不会返回Disposable。