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 2Flowable
是一家发行商
,可以与发行商
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?) {}
})