Java 方法不完全、不完全或不正确的方法';我没打电话
我有以下情况:我需要从数据库获取数据。当我尝试进入UI线程时(我是这样做的):Java 方法不完全、不完全或不正确的方法';我没打电话,java,android,rx-java2,Java,Android,Rx Java2,我有以下情况:我需要从数据库获取数据。当我尝试进入UI线程时(我是这样做的): 我一直有装载指示器。我不明白为什么会发生这种情况,因为我为所有情况(错误和成功情况)添加了showLoadingIndicator(false)。那么,为什么它不移动而数据不显示呢?movieDao.getFavorites()是一个无限流。在无限流上使用.toList()没有意义,因为.toList()在源流完成之前不会发出 有两种选择: 使你的资源有限 使movieDao.getFavorites()返回一个Si
我一直有装载指示器。我不明白为什么会发生这种情况,因为我为所有情况(错误和成功情况)添加了
showLoadingIndicator(false)
。那么,为什么它不移动而数据不显示呢?movieDao.getFavorites()
是一个无限流。在无限流上使用.toList()
没有意义,因为.toList()
在源流完成之前不会发出
有两种选择:
movieDao.getFavorites()
返回一个Single
而不是可观察的
或者简单地把放在源代码后面
mCompositeDisposable.add(movieDao.getFavorites()
.take(1) // This will terminate the stream after it emits first item.
.subscribeOn(Schedulers.io())
...
或者,不要使用.toList()
保持您的无限流,并继续侦听数据库更改
mCompositeDisposable.add(movieDao.getFavorites()
.map(movieEntities -> movieEntities.stream().map(this::getMovie).collect(Collectors.toList()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(list -> {
if (list.isEmpty()) {
mView.showEmptyState(true);
} else {
mView.onMoviesLoaded(list);
}
})
);
mCompositeDisposable.add(movieDao.getFavorites()
.take(1) // This will terminate the stream after it emits first item.
.subscribeOn(Schedulers.io())
...
mCompositeDisposable.add(movieDao.getFavorites()
.map(movieEntities -> movieEntities.stream().map(this::getMovie).collect(Collectors.toList()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(list -> {
if (list.isEmpty()) {
mView.showEmptyState(true);
} else {
mView.onMoviesLoaded(list);
}
})
);