안드로이드를 공부하며 Coroutine이란 키워드가 자주 발견되었다. 궁금해서 알아보기로 했다.
코틀린 스코프: 코루틴이 실행되는 영역,(MainScope, GlobalScope, 별도로 지칭한 Coroutine Scope)
코루틴 컨텍스트: key와 element를 갖는 map,element는 코루틴 컨텍스트의 서브타입으로 Job, Deferred, dispatcher등이 들어감
코루틴 취소와 같은 작업을 간단히 처리
코루틴 빌더: 코루틴을 생성하는 메서드를 의미(launch, async, withContext, runBlocking 등)
코틀린 코루틴에서는 데이터베이스 또는 네트워크 작업 같은 Lon-running tasks에 대해 간편한 코드를 작성할 수있게 해줍니다. 비동기 콜백(async callbacks)작업을 순차적 코드(sequential code)로 간단하게 작성할 수 있다는 장점이 있다.
suspend 키워드를 함수 앞에 기재하여 코루틴이 적용되었다는 것을 명시
코틀린 코루틴 이전의 스레드나 콜백함수를 이용하여 처리, 예외 처리 및 콜백 지옥과 같은 문제에 봉착, suspent를 함수 앞에 붙이는 것으로 순차코드를 작성하듯이 짤 수 있다.
GlobalScope.launch(Dispatchers.Main){
val data1 = async(Dispatchers.Default){
fetchData(1)
}
val data2 = async(Dispatchers.IO){
getchData(2)
}
CheckUsers(data1.await(), data2.await())
}
사실 프로젝트를 끝내고 새로운 것을 개발하며 더 학습하려고 했다. 근데 Corotuine을 학습하며 생각에 변화가 생겼다. 나는 프로젝트를 진행하며 suspend와 Globalscope와 마주한적이 있으며 '아 이게 뭐야 모르는 거잖아'하며 다른 방식으로 프로젝트를 진행했다. 젖소코딩이며 반성해야한다. 만든 어플에대한 기능단위로 코드리뷰를 해봐야겠다.