大きなファイルをアップロードするにはAndroidアプリがサポートする必要がありますが、アップロードが完了するまでユーザーが待たされることはありません。RxJava、disposeを呼び出さないとどうなりますか?
通常、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()
}
考えていたしかし、問題は、アップロードされ()最初のアップローダーは他のすべての処理のコールを処分しますので、複数回呼び出すことができます。
私は処分をしないとどうなりましたか?それが完了したときにそれ自体を処分する方法はありますか? - 進行中の要求モジュールによって保持されるかもしれないデタッチビュー参照
1)避けるメモリリーク:
「アップロードする場合は、いつでも終了できます。」 - アップロードのケースをここで処理できない理由を詳しく説明できますか? –
アップロード中に、オブザーバーを廃棄すると、アップロードが終了します。 –
rxjava2の '.subscribe()'はDisposableを返しません。代わりにvoidを返します。 rxjava1と混同して、 '.subscribe()'が 'Subscription'を返すことを許可しますか? –