android - 使用 CompositeDisposables 的最佳实践是什么
问题描述
我尝试在 onComplete() 块上调用它,但是使用改造网络调用的compositeDisposables.clear() 会导致调用中途取消。
observable.......
.subscribe(
{
utilModule.logI("net repo response")
//cleanDisposables()//this causes HttpOk cancelled error
},
{
utilModule.logI("no repo response" + it.message)
//cleanDisposables()
}
))
}
private fun cleanDisposables() {
//clean old network observables, dispose will prevent further observing
utilModule.logI("disposing observables")
if (!compositeDisposables.isDisposed) {
compositeDisposables.clear()
}
}
解决方案
通常,您的一次性用品将与您的活动或片段生命周期相关联,并在 onDestroy 中清除。
这可能是一个使用 MVP 设计模式的例子......
presenter.kt
fun dispose() {
compositeDisposable.clear()
}
activity.kt
override fun onDestroy() {
super.onDestroy()
presenter.dispose()
}
推荐阅读
- c++ - 我可以使用带有智能指针的 std::smatch 对象吗?
- python - OpenCV Python 窗口滚动条
- html - 将子 div 的高度扩展到其父 div 的高度
- android - 如何在android中将文件发送到我的活动?
- python - 精度类型
- c++ - 将 nullptr 传递给 C 函数是否安全?
- discord - 使用 permissionOverwrite 为角色通道赋予特定权限
- flutter - Android 10 页面过渡
- java - 如何从异常消息堆栈中删除所有不必要的字符?
- css - css 网格容器中烦人的空间。请向我解释为什么在 gid 容器中显示 1 个像素的间隙?