Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

27.9. Flow

27.9.1. MutableSharedFlow

			
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow

fun main() = runBlocking {
    // 1. 创建可变的 SharedFlow(发布者使用)
    val mutableSharedFlow = MutableSharedFlow<String>()
    // 2. 对外暴露不可变的 SharedFlow(订阅者使用)
    val sharedFlow = mutableSharedFlow.asSharedFlow()

    // 3. 订阅者1
    launch(Dispatchers.Default) {
        sharedFlow.collect { message ->
            println("订阅者1 收到: $message")
        }
    }

    // 4. 订阅者2
    launch(Dispatchers.Default) {
        sharedFlow.collect { message ->
            println("订阅者2 收到: $message")
        }
    }

    // 5. 发布消息
    launch {
        // 延迟一下,确保订阅者已准备好
        kotlinx.coroutines.delay(500)
        mutableSharedFlow.emit("第一条消息")
        kotlinx.coroutines.delay(1000)
        mutableSharedFlow.emit("第二条消息")
    }
}