반응형
네트워크는 사용자 경험에 직접적으로 영향을 주는 중요한 요소이다. 서버로부터의 느린 응답, 잦은 타임아웃, 불필요한 데이터 낭비는 결국 앱 이탈률 증가로 이어질 수밖에 없다. 나 또한 다른 안드로이드 앱을 사용할 때 이런 부분들을 체감하면서, 네트워크 통신 최적화의 중요성을 더욱 느끼게 되었다. 그래서 이번 글에서는 네트워크 최적화에 대해 정리해보려 한다.
1. 불필요한 API 호출 줄이기
- 사용자가 보지 않는 화면에서 지속적으로 데이터를 요청하지 않도록 주의!
- ViewModel에서 UI 상태 변화에 따라 필요한 데이터만 요청하도록 설계
2. 응답 캐싱 활용
- Retrofit + OkHttp 조합에서는 캐시 설정을 통해 동일한 요청을 반복하지 않도록 할 수 있다.
val cacheSize = 10 * 1024 * 1024 // 10MB
val cache = Cache(File(context.cacheDir, "http_cache"), cacheSize)
val okHttpClient = OkHttpClient.Builder()
.cache(cache)
.addInterceptor { chain ->
val response = chain.proceed(chain.request())
response.newBuilder()
.header("Cache-Control", "public, max-age=60")
.build()
}
.build()
3. 적절한 이미지 사이즈 및 압축 사용
- 서버에서 내려주는 이미지가 너무 크면 네트워크도, 메모리도 부담됨!
- 서버단에서 리사이즈 또는 Glide로 리사이징하여 사용
Glide.with(context)
.load(url)
.override(300, 300)
.into(imageView)
4. Gzip 압축 사용
- 서버에서 Gzip 압축 설정을 하면, 텍스트 기반 데이터(JSON 등)의 용량을 줄여 전송 속도를 높일 수 있다.
5. HTTP/2 사용
- OkHttp는 기본적으로 HTTP/2를 지원합니다. 동시에 여러 요청을 효율적으로 처리할 수 있어 속도 개선에 효과적이다.
6. 서버 에러 및 재시도 전략
- 네트워크 실패에 대비해 적절한 재시도 전략을 구현한다.
- 예: 3초 뒤 1회 재요청, or WorkManager로 백그라운드 처리
7. 마무리
네트워크 최적화는 사용자 경험을 눈에 띄게 개선할 수 있는 중요한 부분이다. 무한 프로그래스바 때문에 답답함을 느끼는 앱보다는, 빠르게 응답하는 앱이 훨씬 좋은 인상을 남긴다. 조금만 신경 써도, "버벅이던 앱"을 "빠릿한 앱"으로 충분히 바꿀 수 있다.
반응형
'Android' 카테고리의 다른 글
[안드로이드] NetworkOnMainThreadException 발생 원인과 해결 방법 (0) | 2025.05.01 |
---|---|
[안드로이드] 앱 성능 최적화 : 렌더링 성능 (0) | 2025.04.27 |
[안드로이드] 앱 성능 최적화 : 메모리 최적화 (1) | 2025.04.26 |
[안드로이드]커스텀 EditText 만들기 (1) | 2025.04.22 |
[안드로이드]FCM 에서 PendingIntent가 재사용되는 문제와 해결 방법 (0) | 2025.04.21 |