피드로 돌아가기
Dev.toFrontend
원문 읽기
Hilt와 Retrofit Singleton 설계를 통한 Android 네트워크 레이어 최적화
The Complete Retrofit Lifecycle in a Real Android App
AI 요약
Context
단순 API 호출 구현을 넘어 네트워크 라이브러리의 생명주기 관리 부족으로 인한 리소스 낭비 문제 발생. 화면 전환 시마다 발생하는 네트워크 클라이언트 재생성으로 인한 성능 저하 및 메모리 효율성 감소 해결 필요.
Technical Solution
- @Singleton 범위 설정을 통한 Retrofit 인스턴스 단일화로 Connection Pool 및 Thread Pool 재사용성 확보
- OkHttp Interceptor 도입을 통한 공통 HTTP Header 주입 및 요청 전처리 로직의 중앙 집중화
- Repository 패턴 적용으로 ViewModel과 데이터 소스를 분리하여 네트워크 구현체 변경에 유연한 구조 설계
- Sealed Class 기반의 Resource 래퍼 도입을 통한 Success, Error, Loading 상태의 명시적 타입 처리
- viewModelScope 및 Coroutines 기반의 비동기 처리로 Main Thread 블로킹 방지 및 UI 반응성 유지
- @SerializedName 어노테이션을 활용한 API Snake Case와 Kotlin Camel Case 간의 데이터 매핑 자동화
실천 포인트
1. Retrofit 인스턴스 생성 비용을 고려하여 Hilt의 SingletonComponent 내에서 단일 인스턴스로 관리하고 있는가?
2. API 응답 처리 시 Nullable 타입 대신 Sealed Class를 사용하여 모든 상태(Success/Error/Loading)를 강제적으로 처리하는가?
3. OkHttp Interceptor를 통해 인증 토큰이나 공통 헤더 처리 로직을 비즈니스 로직에서 분리하였는가?
4. ViewModel이 구체적인 API 인터페이스가 아닌 Repository 추상화 계층에 의존하여 테스트 용이성을 확보했는가?