创建core
模块,制作module A
和mobule B
实现模块core
在模块中core
添加依赖项RxJava2
并创建类EventBus
和Event
. 如果您想推送Event
更多数据,只需扩展它即可。
object EventBus {
private val sStream: Subject<Event> = PublishSubject.create<Event>().toSerialized()
@JvmStatic
fun push(event: Event) {
sStream.onNext(event)
}
@JvmStatic
fun observerOnUi(topic: Int): Observable<Event> {
return sStream.filter { event: Event -> event.topic == topic }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
}
@JvmStatic
fun observerOnBackground(topic: Int): Observable<Event> {
return sStream.filter { event: Event -> event.topic == topic }.subscribeOn(Schedulers.io())
}
}
open class Event(val topic: Int)
- 您可以调用模块 B 中的用法
EventBus.push(Event(REQUEST_FAILED)
- 在模块 A 创建中观察,
CompositeDisposable
确保在组件销毁时调用 dispose()。
val disposable = CompositeDisposable()
disposable.add(EventBus.observerOnUi(REQUEST_FAILED).subscribe({
// do anything
}))
我使用 Kotlin 代码,如果您在转换为 Java 时遇到问题,请告诉我