본문 바로가기

Dispatchers.Main.immediate

(2)
[Coroutines 마스터] 흔히 하기 쉬운 실수(CountDown Timer) 안녕하세요! Coroutine을 사용할 때 있어서 흔히 하기 쉬운 실수에 대해서 예제와 함께 설명드리도록 하겠습니다. [예제 화면] 단순하게 TextView 2개, Button 1개로 화면을 구성해보았습니다. 아래 코드를 보면 알겠지만, Button을 클릭하면 5초 동안 타이머를 TextView에 (남은 초) 보여주며 타이머가 끝나면 "Ended" 문구를 다른 TextView에 출력합니다. [코드] Dispatchers.Main.immediate을 사용하였으며 runTime()이라는 suspend 함수를 만들어, seconds가 0이 될 때까지 1씩 차감하여 화면에 남은 초를 출력합니다. [실행화면] 무언가 이상하지 않나요? 전 포스트에서 Dispatchers.Main.immediate을 사용하면 순서가..
[Coroutines 마스터] Dispatchers.Main vs Dispatchers.Main.immediate 안녕하세요~! 오랜만에 다시 돌아왔습니다. 부연 설명 없이 단순 명료하게 글을 작성하도록 하겠습니다. Coroutine을 사용할 때 Dispatchers.Main과 Dispatchers.Main.immediate의 차이는 무엇일까요? 매우 간단합니다. 아래 예제를 봅시다. 1) Dispatchers.Main 을 사용할 시 [결과] testDispatchersMain() 함수를 호출하면, 결과는 아래와 같이 나옵니다. 일반적으로 코드는 Top-Down 방식으로 진행이 되죠. 그래서 위 코드를 보면, 예상된 결과는 Zero -> First -> Second 일 것입니다. 하지만 Zero -> Second -> First가 출력되었습니다. 2) Dispatchers.Main.immediate을 사용할 시 [결..