在kotlin android中使用flux结构实现Rx Java的问题
我正在kotlin中实现flux架构,并试图使用RX java中我做了一个调度器,用于调度事件和听事件
Dispatcher.kt
class Dispatcher @Inject constructor() { private val mBus:Subject<Any> init{ mBus = PublishSubject.create() } fun <A : IEvent> dispatchUserEvent(@NonNull e:A) { mBus.onNext(e) } fun <E : IEvent> observeUserEvents(clazz:Class<E>):Observable<E> { return mBus.ofType(clazz) } }
IEvent是一个通用接口的接口,我正在创建一个扩展IEvent的用户事件
IPnrUserEvent.kt
interface IPnrUserEvent :IEvent { fun getPnrNo():String }
PnrUserEvent.kt
class PnrUserEvent(var pnr:String) : IPnrUserEvent { override fun getPnrNo(): String { return pnr } }
现在我正在派遣PnrActionCreator.kt的活动
class PnrUserActionCreator @Inject public constructor (val dispatcher: Dispatcher) : IPnrActionCreator { override fun createPnrAction(pnrNo: String) { dispatcher.dispatchUserEvent(PnrUserEvent(pnrNo)) } }
并听取PnrStore中的PnrUserEvent
class PnrStore @Inject constructor (val pnrStoreActionCreator: PnrStoreActionCreator, val dispatcher: Dispatcher) { var url = "http://api.erail.in/pnr?key=API_KEY&pnr=" init { setObservers() } /** Setting the observer for listening to PnrUserEvent **/ private fun setObservers() { dispatcher.observeUserEvents(PnrUserEvent::class.java).subscribe (object : EventObservable<PnrUserEvent>() { override fun onNext(event: PnrUserEvent) { url + event.getPnrNo() } }) }
我的代码是调度事件,但没有观察Pnrstore中的事件。
想要解决如何从一个类派遣一个事件并使用RXJava在另一个类中侦听