2021년 6월 6일 일요일

코틀린 코루틴

 코루틴 보단 RX를 선호하는 편이지만 github를 보면 자주 보이는지라 

정리해보고자 글을 씁니당 

CoroutineScope 

코루린 영역 말 그대로 라이프사이클를 제어할 수 있다 . 코투린 시작을 위해서 꼭 필요하다 
coroutineScope에서 다른 coroutineScope를 생성할 수 있다. 

위와 같은 상황이 벌어지면 
 부모 자식관계를 형성


CoroutineContext 


코루틴 행동의 요소모음집(?) 이다 
CoroutineScope(Dispatchers.Default + job)
Dispatchersjob은 모두 context로 들어간다 
디버깅에 유용한 CoroutineName
Exception은  CoroutineExceptionHandler  으로 가능하다 

코루틴 내부 코루틴 실행에 경우 오버라이드 되어 수행 
즉, 부모 코루틴에 Context는 크게 신경 안씀 ..default라면 모를까 
-이러한 경우 부모에서 설정한 job과 자식에서 리턴되는 job Instance는 다름 

Job LifeCycle 

Active -> Cancel -> Cancelled
Active -> Completing -> Completed 

스코프 강제 취소나 스코프 영역 작업이 상황파악 될 수 있도록 State를 확장함수로 두고 사용해도 괜잖은 것 같다..


CoroutineBuilder

  • launch 리턴 값 없음 
  • async 리턴 값 존재, await로 시작 fire!! parallel 수행 
    -주의해야 할 점은 바로 선언과 동시에 Await 하면 
    withContext와 다를게 없음.. 
  • withContext parallel 아님 , await 없이 바로 수행 
  • runBlocking 말 그래도 Blocking (호출된 Thread 사용 -> Main에서 사용 X)



참고 

댓글 없음

댓글 쓰기

© 특히하고 특별한
Maira Gall