package Ġcom . example . base _ library Ċ Ċ import Ġio . reactivex . Back pressure Strategy Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . functions . Action Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġio . reactivex . internal . functions . Functions Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ /** Ċ Ġ* Ġ Ġauthor : J iw en j ie Ċ Ġ* Ġ Ġemail : 2 7 8 6 3 0 4 6 4 @ qq . com Ċ Ġ* Ġ Ġtime : 2 0 1 9 / 0 1 / 2 0 Ċ Ġ* Ġ Ġdesc : Ċ Ġ* Ġ Ġversion : 1 . 0 Ċ Ġ*/ Ċ class ĠRx Bus Ġprivate Ġconstructor () Ġ{ ĊĊĠĠ Ġprivate Ġvar Ġm Subscription Map Ġ= ĠHashMap < String , ĠComposite Disposable >() ĊĠĠ Ġprivate Ġval Ġm Subject Ġ= ĠPublish Subject . create < Any >(). to Serialized () ĊĊĠĠ Ġfun Ġpost ( event : ĠAny ) Ġ= Ġm Subject . onNext ( event ) ĊĊĠĠ Ġfun Ġhas Observer s (): ĠBoolean Ġ= Ġm Subject . has Observer s () ĊĊĠĠ Ġfun Ġ< T > Ġget Observer ( type : ĠClass < T >): ĠFlow able < T > Ġ= Ġm Subject ĊĠĠĠĠĠĠĠĠĠĠ Ġ. to Flow able ( Back pressure Strategy . BUFFER ) ĊĠĠĠĠĠĠĠĠĠĠ Ġ. of Type ( type ) ĊĊĠĠ Ġprivate Ġfun Ġ< T > Ġdo Subscribe ( type : ĠClass < T >, Ġnext : ĠConsumer < T >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror : ĠConsumer < Throwable >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete : ĠAction ? Ġ= Ġnull ): ĠDis posable Ġ= ĊĠĠĠĠĠĠĠĠĠĠ Ġget Observer ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ?: ĠFunctions . empty Consumer (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ?: ĠFunctions . ON _ ERROR _ MISSING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete Ġ?: ĠFunctions . EMPTY _ ACTION ) ĊĊĠĠ Ġprivate Ġfun Ġadd Subscription ( any : ĠAny , Ġdis posable : ĠDis posable ) Ġ{ ĊĠĠĠĠĠ Ġval Ġkey Ġ= Ġany . java Class . simple Name ĊĊĠĠĠĠĠ Ġif Ġ( m Subscription Map [ key ] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠ Ġm Subscription Map [ key ] !!. add ( dis posable ) ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġdis posable List Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠĠ Ġdis posable List . add ( dis posable ) ĊĠĠĠĠĠĠĠĠ Ġm Subscription Map [ key ] Ġ= Ġdis posable List ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġfun Ġ< T > Ġregister ( any : ĠAny , Ġtype : ĠClass < T >, Ġnext : ĠConsumer < T >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror : ĠConsumer < Throwable >? Ġ= Ġnull , Ġcomplete : ĠAction ? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠ Ġadd Subscription ( any , Ġdo Subscribe ( type , Ġnext , Ġerror , Ġcomplete )) ĊĊĠĠ Ġfun Ġregister ( any : ĠAny , Ġdis posable : ĠDis posable ) Ġ= Ġthis . add Subscription ( any , Ġdis posable ) ĊĊĠĠ Ġfun Ġunregister ( any : ĠAny ) Ġ{ ĊĠĠĠĠĠ Ġval Ġkey Ġ= Ġany . java Class . simple Name ĊĊĠĠĠĠĠ Ġif Ġ(! m Subscription Map . containsKey ( key )) ĊĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" register Ġevent Ġbefore Ġunregister ") ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠ Ġm Subscription Map [ key ]?. dispose () ĊĠĠĠĠĠĠĠĠ Ġm Subscription Map . remove ( key ) ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġval Ġm Bus : ĠRx Bus Ġby Ġlazy ( mode Ġ= ĠLazy Thread Safety Mode . SYN CH RON IZED ) Ġ{ ĠRx Bus () Ġ} ĊĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Rx Bus " ĊĠĠ Ġ} Ċ }