Kotlin RxJava2 Flowable PublishSubject не отправляет данные вСледующий - PullRequest
0 голосов
/ 11 мая 2018

Я знаю, что по 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)
}

Что я делаю неправильно ??

1 Ответ

0 голосов
/ 11 мая 2018

Это была моя ошибка. Просто используйте BehaviorSubject вместо PublishSubject.

...