마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

andriod 실행순서 정하는법 질문

0 추천
제가 코딩을 하던중에 꼭 이 작업은 끝나고 실행됬으면 하는 부분이 있습니다 예를들면

Log.d(TAG,"1")   --->delay를 2500millsecond 를 줌

Log.d(TAG,"2")

 

여기서 출력값을 차례대로

1

2

이런식으로 delay를 줬다고 해도 실행순서는 Log.d(TAG,"1")이 부분이 끝날때까지 기다렸다가 끝나면

Log.d(TAG,"2")이 부분이 실행되게 하고싶습니다.kotlin입니다 방법이 있을까요?
2달째 코린이 (380 포인트) 님이 2021년 7월 26일 질문

1개의 답변

0 추천

코틀린이니까 코루틴을 사용하세요.

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 처리라 해도 앞의 코드가 먼저 실행되는 것을 기다렸다 처리해 줍니다.

 

spark (148,650 포인트) 님이 2021년 7월 26일 답변
spark님이 2021년 7월 27일 수정
알겠습니다 한번 적용해볼게요~
...