Obelieve's Blog  >  All Categories  >  Notes  >  Kotlin 热流和冷流

Kotlin 热流和冷流

冷流🔗

订阅时,才发送数据。多次订阅,每个订阅都是新的数据。

热流🔗

创建时,就发送数据。类似广播形式,订阅时,之前发送的数据不会收到。

Kotlin 冷流🔗

val flow1 = flow<Int> {  
    repeat(10){  
        emit(it)  
        delay(1000L)  
    }  
}
val flow2 = callbackFlow<Int> {  
    repeat(10){  
        trySend(it)  
        delay(1000L)  
    }  
    awaitClose{  
        cancel()  
    }  
}

冷流转热流🔗

Flow<>.stateIn(GlobalScope, SharingStarted.Eagerly,null)  

Flow<>.shareIn(GlobalScope, SharingStarted.Eagerly)

Kotlin 热流🔗

val flow3 = MutableStateFlow(1)
flow3.value = 2
flow3  
    .onEach { value -> println("${value}") }  
    .launchIn(this)  // 启动收集但不阻塞
flow3.value = 3

MutableSharedFlow(1) 
分类: Notes 
标签Kotlin
发布于: