조각들

학습 배경

최근 네트워크 쪽 코드 구조를 잡아보면서 여러 문제 상황을 마주했는데 동작 원리를 잘 모르다보니 해결 방향성을 잘 못 잡겠어서 공부의 필요성을 느꼈다. 

 

유의미한 학습 내용을 정리해보고자 한다.

 


정리 내용

retrofit은 okhttp에서 제공하는 enqueue 메서드를 사용한다. enqueue 메서드를 까보면 ExecutorService를 사용하는데 코루틴과 독립적인 스레드 풀을 구성한다. ExecutorService란 스레드를 매번 새로 생성하는 것이 아닌 재사용 가능한 형태로 관리함으로써 리소스를 효율적으로 사용할 수 있게 도와주는 API이다. 코루틴은 내부적으로 같은 enqueue 메서드를 활용하기 때문에 네트워크 비동기 요청을 할 때 Dispatcher를 지정해줘도 실질적으로는 (스레드 풀이 달라서) 먹히지 않는다. 이 경우엔 결과값을 콜백으로 받아서 핸들링하는 Dispatcher만 지정이 가능할 뿐이다. 

 

 


참고

https://seokzoo.tistory.com/4?source=post_page-----964f4b5d0a5d--------------------------------

 

Coroutine과 Retrofit을 같이 사용하면 enqueue를 쓰지 않아도 되는 이유는?

이 포스팅을 작성하는 이유 안드로이드를 처음 접할 때 retrofit을 이용해 서버와 통신할 경우 아래와 같은 코드를 작성하게됩니다. interface UserApi { @GET("api/") suspend fun getUserList( @Query("page") page: Int,

seokzoo.tistory.com

 

'Android > 공부' 카테고리의 다른 글

Fragment에선 왜 viewLifecycleOwner를 써야할까  (0) 2024.09.08
코루틴  (0) 2024.05.30
Flow  (2) 2024.03.14
Repository의 효용에 대한 고찰  (0) 2023.03.16
[공부] Github Action CI  (0) 2023.03.04