Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin RxJava2可流动出版物主题不';无法在下一页上发送数据_Kotlin_Rx Java2 - Fatal编程技术网

Kotlin RxJava2可流动出版物主题不';无法在下一页上发送数据

Kotlin RxJava2可流动出版物主题不';无法在下一页上发送数据,kotlin,rx-java2,Kotlin,Rx Java2,我知道在stackoverflow上我们有很多类似的问题,但我真的不知道我做错了什么 我有列表对象 val applicationList: MutableList<Application> = generateApplications() 这是我的getFlowable方法: override fun getApplications(): Flowable<List<Application>> { return applicationsFlowab

我知道在stackoverflow上我们有很多类似的问题,但我真的不知道我做错了什么

我有列表对象

val applicationList: MutableList<Application> = generateApplications()
这是我的getFlowable方法:

override fun getApplications(): Flowable<List<Application>> {
    return applicationsFlowable
}
但onNext方法从不调用。 如果我使用这个代码,它工作得很完美

override fun getApplications(): Flowable<List<Application>> {
    return Flowable.just(applicationList)
}
override fun getApplications():可流动{
返回可流动的.just(应用程序列表)
}
但这并不是我想要的。因为当我创建新的应用程序对象时,我希望向我的applicationsFlowable发出新列表

override fun createApplication(name: String): Single<Application> {
    val application = generateApplication(name)
    applicationsPublishSubject.onNext(applicationList)
    return Single.just(application)
}
重写应用程序(名称:字符串):单个{
val应用程序=生成应用程序(名称)
ApplicationPublishSubject.onNext(应用程序列表)
返回单个。仅限(应用程序)
}

我做错了什么

这是我的错误。只需使用BehaviorSubject而不是PublishSubject。

您发送事件的时间可能比流的订阅者早。在调用
onNext
之前,请检查
applicationsPublishSubject.hasObservators()
,查看是否存在这种情况。
compositeDisposable.add(dataSource.getApplications()
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({
            getViewState().setApplicationList(it)
        }, {
            Log.e("ApplicationsPresenter", it.toString())
        }))
override fun getApplications(): Flowable<List<Application>> {
    return Flowable.just(applicationList)
}
override fun createApplication(name: String): Single<Application> {
    val application = generateApplication(name)
    applicationsPublishSubject.onNext(applicationList)
    return Single.just(application)
}