코틀린이니까 코루틴을 사용하세요.
couroutineScope.launch {
Log.d(TAG, "1")
delay(2500)
Log.d(TAG, "2")
}
// 아래처럼 잡을 두개 돌리고 하나가 끝날 때까지 대기하도록 해줄 수도 있습니다.
//job1과 job2는 별개로 실행이 됩니다.
val job1 = couroutineScope.launch {
Log.d(TAG, "1")
delay(2500)
}
val job2 = couroutineScope.launch {
job1.join() // job1이 끝날 때까지 대기.
Log.d(TAG, "2")
}
기본적으로 안드로이드에서 제공해주는 CoroutineScrope은 Activity, Fragment같은 LifecycleOwner에서는 LifecycleScope, ViewModel에는 ViewModelScope이 지원되므로 이걸 사용하시면 되고, 그외에는 하나 생성하시거나 withContext()를 사용해서 쓰레드만 스위치를 하세요. 코루틴이 같은 CorouineScope 내에서 실행되는 코드는 Structured Concurrency 라고 해서 Asynchronous 처리라 해도 앞의 코드가 먼저 실행되는 것을 기다렸다 처리해 줍니다.