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 에 넣고 달력 값을 넣어준다.
- 끝 -
'Kotlin Study' 카테고리의 다른 글
Android get IP Address (min 29 sdk) (0) | 2023.11.17 |
---|---|
func return null 처리 (0) | 2023.09.01 |
Kotlin Coroutine 기본 동작 방식 (0) | 2022.04.20 |
Kotlin , null 처리 방법 (0) | 2021.07.05 |
[각기 다른 google-services.json 설정파일의 FirebasePoject, 한 App 에서 사용하기] (0) | 2021.05.07 |