Kotlin/9. Coroutine (7) 썸네일형 리스트형 9.7 Coroutine Cancel Coroutine Cancel 코루틴 제어 한다는 것은 시작하고 결과를 리턴 받는 작업 뿐만이 아 닌 코루틴 작업의 취소도 처리 할 수 있어야 한다 종류 Cancel Job & Defferd의 cancel() Yield 해당 코루틴을 잠시 중단과 함께 해당 코투틴을 잠시 양보하는 기능 isActive 확장 프로퍼티를 이용한 방법 isActive로 확인후 cancel() 9.6 CoroutineBuilder launch fun coroutineEx() : Job{ val launchTest = CoroutineScope(Dispatchers.IO).launch { println("hi") } return launchTest } fun main() { runBlocking { coroutineEx().join() } } 결과반환이 필요 없는 코루틴을 만들고자 할 때 사용 Job 객체를 리턴 받아 해당 코루틴을 관리 async suspend fun coroutineExUsingAsync(){ val asyncTest = CoroutineScope(Dispatchers.IO).async { "hi" } println(asyncTest.await()) } fun main() { runBlocking { corout.. 9.5 Suspend Function Suspend Function 코루틴 함수에서 멈춤 기능을 사용하려면 반드시 코루틴 suspend function 을 선언하여 사용하여야 한다 suspend function 함수는 코루틴 블럭, suspend function 함수 내부에서만 사용 할 수 있음 ex) suspend 함수를 overriding 된 함수에서 사용시 overring 된 함수에는 suspend를 붙일 수 없으므로 그 부분을 코루틴 블럭으로 감싸서 실행 9.4 Dispatcher Dispatcher Coroutine을 Thread에 배분하는 역할을 담당 Gradle 선언해야함 종류 Dispatchers.Main(only Android) Android Main(UI) Thread에서 Coroutine을 실행하는 Dispatcher 반드시 UI 와 상호작용하기 위해서만 사용 Dispatchers.IO File Input/Output , Network IO, Parser(SQL과 같은 데이터베이스 언어) 등의 작업에 최적화된 Dispatcher Dispatchers.Default CPU 사용량이 많은 작업에 사용 대규모 Sorting, Graphics Rendering, Android SurfaceView 처리 등 Dispatchers.Unconfined : 특수한 상황에서 코루틴을 실행 9.3 Job Function Job 함수 start 현 코루틴의 상태를 알아내어 동작 중 = true, 준비/종료 = false join 현 코루틴이 종료되기를 기다림 async Deferred의 await 와 같은 역할 cancel 현 코루틴을 즉시종료(Thread의 interrupt 와 같은 역할) cancelAndJoin 현 코루틴을 종료하고 대기 cancelChildren 현 Coroutine Scope 내에 작성한 자식 코루틴들을 종료(부모 코루틴은 종료되지 않음) 9.2 CoroutineCotext , CoroutineScope CoroutineContext(interface) 코루틴 처리를 어떻게 할 것인지에 대한 요소(Element)들의 집합 CoroutineScope의 속성이 됨 요소 Dispatcher Job CoroutineExceptionHandler CoroutineScope(interface) Coroutine Block(Area)을 생성하는 역할 Scope는 Coroutine 이 실행되는 범위를 나타냄 CoroutineContext 속성 하나만을 갖음 Builder는 CoroutineScope의 확장 함수 launch -> Job 타입(결과값이 없는 코루틴, 관리만), Scope 확장함수 async -> Deferred 타입(결과값이 있는 코루틴) , Scope 확장함수 withContext() - T 반환(결과.. 9. Coroutine Coroutine 이란 CoroutineCotext , CoroutineScope Job Function Dispatcher Suspend Function CoroutineBuilder Coroutine Cancel 이전 1 다음