Я пытаюсь остановить сопрограмму, если пользователь нажимает кнопку. Однако, когда я делаю:
GlobalScope.launch(Dispatchers.Main) { //code } button.setonclicklistener(){ GlobalScope.cancel() }
Приложение вылетает. Как я могу это исправить?
Измените это так
var job: Job? = null job = GlobalScope.launch(Dispatchers.Main) { //code } button.setonclicklistener(){ job?.cancel() }
Вот пример, который вы можете использовать и изменять согласно вашему коду
val job =GlobalScope.launch(Dispatchers.Main) { try { //code } finally { println("job: I'm running finally") } } job.cancelAndJoin() // cancels the job and waits for its completion println("main: Now I can quit.")