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

GitHub 加速计划 / compose / compose
33.27 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:2 个月前 )
501b5acd Add `jhrotko` to Core Maintainers. Signed-off-by: Laura Brehm <laurabrehm@hey.com> 7 天前
f51bc4cd Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐