Skip to content

LiveEvent

rongc edited this page Jul 10, 2021 · 1 revision

LiveEvent

基于LiveData实现的事件总线。拥有生命周期感知能力,不需要时自动移除。

1. 基础事件

只接收订阅后发送的消息

// 发送普通事件
"eventName".liveBus<String>().setValue("value")
// 订阅
"eventName".liveBus<String>().observe(owner) {
   // it.logd()
}

2. 黏性事件

订阅时也能收到最近依次发送的消息

// 发送黏性事件
"eventName".liveBus<String>().setStickyValue("value")
// 订阅
"eventName".liveBus<String>().observerSticky(owner, true) {
   // it.logd()
}

3. 一次性事件

同一个Event只会接收到回调一次

val event = Event("content")
val liveData = LiveData<Event<String>>()
liveData.value = event

LiveData.observeOnce(owner) {
    // it.content == "content"
}
// 之后的更新不会被接收
liveData.value = event

4. 不丢失事件

发送的事件不会丢失,如果订阅者处于非激活状态时发送了多个事件,在回到激活状态后将依次收到之前发送的所有事件

LiveData.observeAll(owner) {

}
Clone this wiki locally