Android/Jetpack Compose

[Jetpack Compose] Delay 주는 방법

chattymin 2023. 9. 3. 10:10
728x90
반응형

개발을 하다보면 특정 초 지난 후 에 기능이 작동하면 좋겠다는 생각을 할 때가 있다.

 

그러면 Delay를 줘야하는데 어떻게 줄 수 있을까?

 

두가지 방법이 있다.

 

1. Handler

Handler(Looper.getMainLooper()).postDelayed({
    // do something
},1000)

하단에 있는 , 뒤에있는 숫자만큼 딜레이를 주고 중괄호 내부에 있는 코드를 실행시킨다. 1000은 1초를 의미한다.

 

2. LaunchEffect

LaunchedEffect(Unit){
    delay(1.seconds)
    // do something
}

delay 내부에 있는 시간만큼 시간이 지난 후 밑에있는 코드를 실행시킨다. Handler와 마찬가지로 1000을 적으면 1초가 되고, 위 예시처럼 1.seconds를 사용해도 된다.

 

 

이 두 코드는 뭐가 다를까?

사실 다를게 없다. 기능상으로 완전히 똑같은 기능을 수행한다. 

비동기 작업을 처리하고, 정한 시간만큼 delay가 지난 후 지정한 작업을 실행시킨다.

 

그럼 뭘 써야할까?

Jetpack Compose를 사용한다면 2번째 방법인 LaunchEffect를 사용하는 것이 더 좋다.

기능상 문제가 없다면서 왜 두번째 방법을 써야할까?

 

Handler는 기존 안드로이드에서 사용하던 방법이다.

LaunchEffect는 Jetpack Compose에서 권장하는 방식이기 때문이다.

우리가 쓰는 프레임워크에서 더 권장한다면 그걸 써야지 뭐...

 

사실 난 Handler를 쓰는 방식을 더 좋아한다. 코드가 직관적이라고 해야하나?

근데 만약 delay를 중복시키거나, 여러번 실행시키려면 LaunchEffect가 더 좋아보이긴 한다.

 

 

 

여기까지 읽으면서 드는 의문점이 있을 것이다.

LaunchEffect는 뭐고 어떻게 쓸까?

 

이 부분은 나도 공부중이라서 완전히 정리된 상태가 아니다. 그렇기 때문에 좀 더 공부하고 글 쓸게욤..

 

Material 2에서 Material 3로 바뀌면서 그거 공부하기도 빡세다. 천천히 해보겠슴당

728x90
반응형