有一个函数从数据库查询数据并返回一个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错误?

发布于 2021-02-03 01:35:21
Disposable是可观察者和观察者之间的流或链接。您可以像下面这样全局声明
lateinit var disposable: Disposable然后
if(!disposable.isDisposed){
disposable.dispose()
}https://stackoverflow.com/questions/66014296
复制相似问题