![](/img/trans.png)
[英]how to launch a coroutine inside a composable in Android Jetpack Compose
[英]How to launch a coroutine that should never be canceled from a Compose event handler
我有這個代表“編輯數據”屏幕的可組合項:
@Composable
fun EditNodeScreen(
vm: EditNodeViewModel,
canceled: () -> Unit,
accepted: (id: UUID) -> Unit
) {
// ...
Button(onClick = {
val id = vm.save()
accepted(id)
}) {
Text(text = "Save")
}
}
除了, EditNodeViewModel.save()
實際上是一個暫停 function,所以我不能那樣調用它。
我能找到的是我應該使用rememberCoroutineScope()
創建協程 scope ,然后使用它來啟動協程:
onClick = {
coroutineScope.launch {
val id = vm.save()
accepted(id) // side question: do I have to switch back to Main context?
}
}
但是文檔還說,如果組合被分離,這個協程將被取消。 我不想在開始后取消保存過程!
這仍然是正確的做法,還是有更好的方法? 我應該使用GlobalScope.launch
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.