Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Android LiveData到Observable转换以使用RxJava_Android_Observable_Rx Java2_Android Livedata - Fatal编程技术网

Android LiveData到Observable转换以使用RxJava

Android LiveData到Observable转换以使用RxJava,android,observable,rx-java2,android-livedata,Android,Observable,Rx Java2,Android Livedata,通过使用LiveDataReactiveStreams可以将LiveData转换为Publisher。 但是为了使用RxJava2方法,比如和最新from我需要一个可观察的,而不是发布者。除了使用这个(过时的)库,还有其他方法可以将Publisher转换为Observable吗?所以我设法做了类似的事情。但是我不知道把这些代码放在android项目结构的什么地方,因为TopPublisher需要活动实例 val rxDataPublisher: Publisher<DataSnapshot

通过使用
LiveDataReactiveStreams
可以将
LiveData
转换为
Publisher

但是为了使用RxJava2方法,比如
和最新from
我需要一个
可观察的
,而不是
发布者。除了使用这个(过时的)库,还有其他方法可以将Publisher转换为Observable吗?

所以我设法做了类似的事情。但是我不知道把这些代码放在android项目结构的什么地方,因为
TopPublisher
需要活动实例

val rxDataPublisher: Publisher<DataSnapshot> = LiveDataReactiveStreams.toPublisher(this@LocationActivity,fireBaseLiveData)

val rxLocationPublisher: Publisher<Location> = LiveDataReactiveStreams.toPublisher(this@LocationActivity, locationLiveData)

val rxFlowable: Flowable<Pair<Location, DataSnapshot>> = Flowable.fromPublisher(rxDataPublisher)
                .withLatestFrom(rxLocationPublisher, BiFunction{t1, t2 -> Pair(t2,t1) })

val flowableToLiveData = LiveDataReactiveStreams.fromPublisher(rxFlowable)
val rxDataPublisher:Publisher=LiveDataReactiveStreams.toPublisher(this@LocationActivity,fireBaseLiveData)
val rxLocationPublisher:Publisher=LiveDataReactiveStreams.toPublisher(this@LocationActivity,locationLiveData)
val rxFlowable:Flowable=Flowable.fromPublisher(rxDataPublisher)
.withLatestFrom(rxLocationPublisher,双函数{t1,t2->Pair(t2,t1)})
val flowableToLiveData=LiveDataReactiveStreams.fromPublisher(rxFlowable)
//可流动到LiveData
val可流动=可流动。仅(1,2,3)
val liveData=LiveDataReactiveStreams.fromPublisher(可流动)
//从实时数据到发布服务器(Flowable也是发布服务器)
LiveDataReactiveStreams.toPublisher(此为liveData).subscribe(对象:Subscriber{
重写fun onNext(t:Int?{}
重写fun onComplete(){}
覆盖订阅的乐趣(s:订阅?{}
重写一个错误(t:Throwable?{}
})

RxJava 2
Flowable
是一家
发行商
,可以与
发行商
s合作。您可能不必转换为
Observable
// Flowable to LiveData

val flowable = Flowable.just(1, 2, 3)
val liveData = LiveDataReactiveStreams.fromPublisher<Int>(flowable)

// From Live Data to Publisher(Flowable is also publisher)

LiveDataReactiveStreams.toPublisher(this, liveData).subscribe(object: Subscriber<Int>{
    override fun onNext(t: Int?) {}

    override fun onComplete() {}

    override fun onSubscribe(s: Subscription?) {}

    override fun onError(t: Throwable?) {}
})