本文主要是介绍Kotlin 实现的基于 RxJava 2.× 的 RxBus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实现
既然你主动打开了这篇文章,那你肯定了解 RxBus 是什么,以及 RxBus 是干什么用的。所以我就偷个懒不陪你复习基础知识了 #滑稽,下面直接贴代码。
Kotlin 实现的基于 RxJava 2.× 的 RxBus 单例:
object RxBus {// 支持背压且线程安全的,保证线程安全需要调用 toSerialized() 方法private val mBus: FlowableProcessor<Any>by lazy { PublishProcessor.create<Any>().toSerialized() }//发送事件fun post(obj: Any) {mBus.onNext(obj)}//订阅事件fun <T> toFlowable(tClass: Class<T>) = mBus.ofType(tClass)fun toFlowable() = mBusfun hasSubscribers() = mBus.hasSubscribers()//不支持背压且线程安全的,保证线程安全需要调用 toSerialized() 方法private val mBusNB: Subject<Any>by lazy { PublishSubject.create<Any>().toSerialized() }//发送事件fun postNB(obj: Any){mBusNB.onNext(obj)}//订阅事件 fun <T> toObservable(tClass: Class<T>): Observable<T> = mBusNB.ofType(tClass)fun
这篇关于Kotlin 实现的基于 RxJava 2.× 的 RxBus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!