android - 无法解析定义的 Disposable
问题描述
从数据库中查询数据并返回一个函数Flowable
@Dao
interface DataDao {
@Query("SELECT * FROM DataTable ORDER BY `order`")
fun listenToAll():Flowable<List<DataRoomEntity>>
}
订阅它时,一次性没有解决(见截图)。
var dataDao: DataDao
fun listenToDataDb(): Flowable<Data> = dataDao.listenToAll()
.map { convertEntitiesToData(it) }
fun getData(){
//var disposable: Disposable? = null
var disposable = listenToDataDb()
.subscribe({ data ->
// do something with data
disposable?.dispose() //<== disposable is unresolved
}, { throwable ->
disposable?.dispose(). //<== disposable is unresolved
})
}
}
但是如果确实定义了var disposable: Disposable = null
第一个就可以了
fun test(){
var disposable: Disposable? = null
disposable = listenToDataDb()
.subscribe({ data ->
// do something with data
disposable?.dispose() //<=== it is fine
}, { throwable ->
disposable?.dispose()
})
}
如果不先定义它为什么会unresolved
出错?
解决方案
ADisposable
是 Observable 和 Observer 之间的流或链接。您可以像下面这样全局声明
lateinit var disposable: Disposable
然后
if(!disposable.isDisposed){
disposable.dispose()
}
推荐阅读
- javascript - 传递对象以更新redux中数组中的一个字段
- ios - 在 UINavigationController Stack 的 UIViewController 中关闭 UIAlertController
- javascript - 使用jquery在html中搜索文件名
- unit-testing - 对组合物的模拟使用 spocks 方法计数器?
- c++ - 带默认参数的 initializer_list 构造函数
- ruby-on-rails - Rails 多个单选按钮
- amazon-web-services - 如何获取 AWS 实例的动态成本?
- macos - Mac OS 上的 ZSH 设置
- dotnet-httpclient - 来自rest api的错误请求here maps
- python-3.x - Py charm 冻结图未将 8 个变量转换为常量操作