Jetpack Compose学习之rememberCoroutineScope

rememberCoroutineScope是干什么的?

一句话,类似于GlobalScope一样,这个就是让你在Composable中使用协程的

看代码

@Composable
fun HelloContent() {
    val inputText = remember { mutableStateOf("") }
    val scope = rememberCoroutineScope()
    Column(modifier = Modifier.padding(16.dp)) {
        scope.launch(Dispatchers.Main) {
            for (i in 0..10000) {
                delay(100)
                logcat("i:$i")
            }
        }
        DisposableEffect(key1 = inputText.value) {
            logcat("on spose")
            onDispose {
                logcat("onDispose")
            }
        }
        
        Text(
            text = "Hello",
            modifier = Modifier.padding(bottom = 8.dp),
            style = MaterialTheme.typography.h5,
        )
        OutlinedTextField(
            value = inputText.value,
            onValueChange = { inputText.value = it },
            label = { Text(text = "Name") },
        )
    }
}

从上面的代码中可以看到,我们使用rememberCoroutineScope很容易启动创建一个scope,然后调用他的launch方法。

之所以用它,而不是用GlobalScope,是因为它可以再dispose之后,自动停止协程的执行,看日志

04-26 15:56:17.731 14727 14727 E yanlog  : i:85
04-26 15:56:17.832 14727 14727 E yanlog  : i:86
04-26 15:56:17.933 14727 14727 E yanlog  : i:87
04-26 15:56:18.033 14727 14727 E yanlog  : i:88
04-26 15:56:18.156 14727 14727 E yanlog  : onDispose

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值