Android postDelayed 순서대로 실행

개요

안드로이드 앱 개발 시 일정시간 지연 후 무엇인가를 실행해야 하는 경우가 있습니다. postDelayed 를 이용하면 가능합니다. 자세한 설명은 이곳에서 확인하실 수 있습니다. 예제 코드는 다음과 같습니다.

Handler(Looper.getMainLooper()).postDelayed({
    //Do something
}, delay)

delay 는 Milisecond 단위이고 1000 이 1초에 해당합니다.

postDelayed 순서대로 실행

그런데 가끔 작업을 일정한 시간이나 불규칙한 시간 간격으로 실행해야 하는 경우가 있습니다. 예를 들어 1초, 3초 후 실행한다고 가정해 보겠습니다. 아마 다음과 같이 코드를 작성하게 될 것 입니다.

Handler(Looper.getMainLooper()).postDelayed({
    //Do something
}, 1000) //1초 후 실행

Handler(Looper.getMainLooper()).postDelayed({
    //Do something
}, 3000) //3초 후 실행

실제로는 의도한 대로 동작하지 않습니다. 앞의 코드가 끝난 후 뒤쪽의 코드가 실행되는 것이 아니기 때문입니다. 1초 후 실행은 정상적으로 동작합니다. 뒤쪽의 코드는 실행시간을 기준으로 4초 후가 아닌 3초 후 실행됩니다.

특정한 시간을 기준으로 누적되는 시간으로 적용해 주어야 의도한 대로 실행됩니다. 다음과 같은 코드형태가 됩니다.

Handler(Looper.getMainLooper()).postDelayed({
    //Do something
}, 1000) //1초 후 실행

Handler(Looper.getMainLooper()).postDelayed({
    //Do something
}, 4000) //위쪽 코드 실행 후 3초 후 실행

이번글에서는 postDelayed를 순서대로 실행하는 방법을 알아보았습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

Time limit is exhausted. Please reload the CAPTCHA.