작성
·
389
1
강의를 듣다보면 CoroutineScope 와 withContext 의 차이를 정확히 모르겠습니다. withContext 는 context 에 변화를 줄 수 있어서 withContext(Dispatchers.Default) 이런 식으로 쓴다고 하는데, CoroutineScope 도 동일하게 CoroutineScope(Dispatchers.Default).launch 이런식으로 context 를 설정해줄 수 있는데 어떨 때 CoroutineScope 를 쓰고 어떨 때 withContext 를 쓰는지 잘 모르겠습니다.
답변 1
0
안녕하세요! lkckss123님! 질문 남겨 주셔서 감사합니다! 😊
저는 다음과 같이 생각하고 있습니다.
CoroutineScope()
은 말 그대로 새로운 코루틴 영역을 생성하는 것입니다. 따라서 기존에는 코루틴을 만들 수 없던 상황에서, 코루틴을 만들고 싶을 때 사용할 수 있죠. 보통은 새로운 코루틴 영역 아래서 여러 코루틴을 실행시켜 한 번에 관리하려 할 때 사용합니다.
withContext()
는 기존에 있는 코루틴 영역에서 관리하는 context만 바꾼 코루틴 영역을 만드는 것입니다. 실제로 suspend 함수이기 때문에 또 다른 suspend 함수에서만 실행할 수 있다는 것이 특징입니다. 보통은 기존에 코루틴 영역이 있는데 Dispatcher와 같은 특정 context element만 바꾸고 싶을 때 사용합니다.
답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏