Вы можете просто использовать сопрограмму для достижения этой цели.Поскольку потоки обычно дороги, сопрограмма является более легким способом создания потоков.Для вопроса, мы должны сделать две вещи
1) Вы должны не блокировать поток без блокировки
2) Тост должен быть показан в потоке пользовательского интерфейса
btn!!.setOnClickListener {
GlobalScope.launch {
delay(10000L)
withContext(Dispatchers.Main){
Toast.makeText(context,"Done", Toast.LENGTH_LONG).show()
}
}
}
Таким образом, в приведенном выше коде
1) GlobalScope.launch
- запускает рабочий поток диспетчера и задерживает выполнение на 10000 мс, используя delay(10000L)
2), как только задержка будет выполнена, мыснова переключаетесь на основной поток с помощью withContext(Dispatchers.Main){
и отображаете тост внутри него.