Ответ
Toasts должны показываться только на UI потоке, потому что они взаимодействуют с системным UI. Попытка показать Toast из фонового потока вызовет CalledFromWrongThreadException.
Пример правильного использования:
Handler(Looper.getMainLooper()).post {
Toast.makeText(context, "Message", Toast.LENGTH_SHORT).show()
}
Или с помощью runOnUiThread в Activity:
runOnUiThread {
Toast.makeText(this, "Message", Toast.LENGTH_SHORT).show()
}
Все UI операции, включая Toast, должны выполняться на главном потоке, так как Android UI toolkit не является потокобезопасным.