Я знаю, что по stackoverflow у нас много похожих вопросов, но я действительно не знаю, что я делаю неправильно.
У меня есть список объектов.
val applicationList: MutableList<Application> = generateApplications()
После того, как я создаю PublishSubject и Flowable
val applicationsPublishSubject = PublishSubject.create<List<Application>>()
val applicationsFlowable = applicationsPublishSubject.toFlowable(BackpressureStrategy.LATEST)
// The second variant
// applicationsFlowable = Flowable.fromPublisher<List<Application>> { applicationsPublishSubject }
После того, как я создаю приложения и вызываю
applicationsPublishSubject.onNext(applicationList);
Это мой метод getFlowable:
override fun getApplications(): Flowable<List<Application>> {
return applicationsFlowable
}
И вот как я подписываюсь на мою текучую среду:
compositeDisposable.add(dataSource.getApplications()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
getViewState().setApplicationList(it)
}, {
Log.e("ApplicationsPresenter", it.toString())
}))
Но метод onNext никогда не вызывается.Если я использую этот код, он отлично работает.
override fun getApplications(): Flowable<List<Application>> {
return Flowable.just(applicationList)
}
Но это не совсем то, что я хочу.Потому что, когда я создам новый объект Application, я хочу выдать новый список в мои applicationFlowable.
override fun createApplication(name: String): Single<Application> {
val application = generateApplication(name)
applicationsPublishSubject.onNext(applicationList)
return Single.just(application)
}
Что я делаю неправильно ??