RxJava RxAndroid 一次性赋值
RxJava RxAndroid Disposable assignation
在调用onNext/onError时重复使用一次性用品可以吗?
我不太明白为什么需要一次性用品,在旧版本的 rxJava 上进行改造不需要一次性用品。我还假设当 activity 或碎片被销毁时,应该丢弃一次性物品?
这是正确的方法吗?
disposable = db.databaseDao().getCategories().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ if (it.isEmpty()) addDefaultCategories() },
{ it.printStackTrace() }
)
对我来说,这部分有点复杂。抱歉这个问题对其他人来说可能很愚蠢。
是的,这种方法非常好。
Disposables 确保您不会留下任何内存泄漏。如果 RX 流未完成并且调用流的 Activity/Fragment/ViewModel 被销毁,您将最终导致内存泄漏。
因为我几乎总是从我的 ViewModel 调用 RX 流,所以我有以下方法让我的生活更轻松:
open class BaseViewModel : ViewModel() {
private var compositeDisposable = CompositeDisposable()
fun addDisposable(disposable: Disposable) {
compositeDisposable.add(disposable)
}
@CallSuper
override fun onCleared() {
super.onCleared()
compositeDisposable.clear()
}
}
在调用onNext/onError时重复使用一次性用品可以吗?
我不太明白为什么需要一次性用品,在旧版本的 rxJava 上进行改造不需要一次性用品。我还假设当 activity 或碎片被销毁时,应该丢弃一次性物品?
这是正确的方法吗?
disposable = db.databaseDao().getCategories().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ if (it.isEmpty()) addDefaultCategories() },
{ it.printStackTrace() }
)
对我来说,这部分有点复杂。抱歉这个问题对其他人来说可能很愚蠢。
是的,这种方法非常好。
Disposables 确保您不会留下任何内存泄漏。如果 RX 流未完成并且调用流的 Activity/Fragment/ViewModel 被销毁,您将最终导致内存泄漏。
因为我几乎总是从我的 ViewModel 调用 RX 流,所以我有以下方法让我的生活更轻松:
open class BaseViewModel : ViewModel() {
private var compositeDisposable = CompositeDisposable()
fun addDisposable(disposable: Disposable) {
compositeDisposable.add(disposable)
}
@CallSuper
override fun onCleared() {
super.onCleared()
compositeDisposable.clear()
}
}