Kotlin Study

Kotlin Coroutine 간단 사용법

85chong 2023. 12. 28. 14:38
728x90
반응형
SMALL

 

* Coroutine Thread

- Main : 말 그대로 메인 , UI 작업시 사용해야 하는 스레드

- IO : 백그라운드 작업할때만 사용해야 하는 스레드 (UI 절대 포함 안됨)

- Default : 계산을 오래 하거나 for 문 등 오래 계산 되어야 하는 작업들 사용시 쓰는 스레드

 

 

** Coroutine function

- launch : 

   - 바로 실행 , 실행결과 반환 안됨(Job 객체만 반환)

   - join 으로 완료 대기 가능한 특징있음

 

- async : 

   - 실행결과 Deffered<T> 통해서 반환하며 await 를 사용해서 결과값을 받을 수 있음

   - await 는 작업이 완료 될때까지 기다리는 특지있음

 

예제 : 

        CoroutineScope(Dispatchers.Main).launch {
            var arr = CoroutineScope(Dispatchers.Default).async {
                updateCalendarDay(mYear, mMonth)
            }.await()
            binding?.calendarGridView?.adapter = CalendarAdapter(requireContext(), arr!!)
        }
        initView()

 

설명 :

- updateCalendareDay 는 arr 값을 리턴한다

- 위 코드는 onCreate 안에서 실행하는 코드이다

- UI 그리기 위해서 Dispatchers.Main 을 사용했고, arr 결과값을 받기 위해 .async 와 .await 를 이용했다

- 해당 달력값의 arr 다 받기 전에 먼저 달력을 띄워주는 작업은 initView() 에 있다

- 먼저 달력을 띄운다(이때, 달력 값은 없다)

- updateCalendarDay에서 계산된(.await 를 이용해서 받은 결과) 값의 arr 로 Dispatchers.Main 안에 있는 달력 Adapter 에 넣고 달력 값을 넣어준다.

 

 

 

- 끝 -