새차원의 코루팀 유튜브 강의를 들으며 코루틴에 대해 정리한 내용이다.
https://www.youtube.com/watch?v=Vs34wiuJMYk&list=PLbJr8hAHHCP5N6Lsot8SAnC28SoxwAU5A
이번강의는 코루틴에대한 대략적인 설명이기에 딱히 코루틴에대한 소개만있다.
그냥 협동 루틴이라는데 이렇게 말해서는 이해할수가없다.
이런 개념인데 이거 잘 설명한 블로그
이걸보면 이해할수 있을것이다.
코루틴은 개념이고 아주 옛날에 나온개념이다 그걸 코틀린에서 적용한것뿐
코루틴은 저런 많은 작업을 하는데 적합하지만 안드로이드에서는 비동기처리 코드를 깔끔하게 만드는 용도로 사용하고 구글이 그걸 밀고있다.
https://www.youtube.com/watch?v=BOHK_w09pVA&t=667s
구글에서 자기들 방식으로 코루틴을 이렇게 사용해라 보여준 영상이다.
이걸 요약해보자면
우리가 이런식으로 코드를 작성하고싶지만 이렇게 작성못한다.
이렇게 코드를 짜면 메인 쓰레드에서 네트워크 작업했다고 Exception난다.
그래서 이거 극복하려고 쓰레드 처리를하는데 이런식으로
이것도 오류일어난다
ui를 ui쓰레드에서 업데이트해야하는데 다른쓰레드에서 업데이트해서 오류난다.
그래서 우리가 쓰는코드는
call back 을 이용해서 해왔다.
하지만 이것도 문제있다 콜백지옥이며, 메모리 관리해줘야하고(콜객체 화면나갈때 clear해야하므로)
그래서 메모리 관리위해 이런 cancel 코드 죄다 넣어줘야한다 얼마나 빡치는가
그래서 코루틴 사용하는거보자
자 짜고싶은 코드 이거 당연히 안됨
일단 api호출시 ui가 블로킹되고 화면을 못그리고 앱이 죽게된다.
그래서 이렇게 콜백방식 이용한다. 물론 코드가 못생김
그래서 드림코드 처럼 코루틴을 이용한 코드는 이렇다
callback 없이 동기적인 것처럼 코드 작성했고 별도 쓰레드 갔다오는 처리도 없었는데 실제 실행은 새로운 쓰레드 생성되고 정보 다불러왔을때 다시시작하는 callback와 같은 방법으로 처리된다
그래서 이런부분 코루틴에서 자동으로 처리해주는것이다.
그래서 코루틴 난이도를 보자면
Rx랑 비교하자면 이렇다.