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