마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지 캐시? 관련 해서

0 추천
면접질문에서 몇번 들은 질문인데요.

이미지 캐시를 처리해보았는가 또는 서버에서 데이터를 불러오는 와중 네트워크가 끊겨서 못가져오는경우

캐시처리나 어떤 방식을 사용한게 있는지? 이런 비슷한 부류의 질문들을 들었었습니다

저는 글라이드의 error 처리하는 그 메소드? 에러일때 디폴트이미지 설정해주는 것밖에 생각이 나지않는데

구글링해도 키워드를 잘 못 잡은건지 찾지를 못하겠더라구요.

어떤 방식으로 처리하는지가 궁금합니다.
수원통학러 (3,570 포인트) 님이 2022년 12월 12일 질문

1개의 답변

0 추천
글라이드 소스를 확인해 보시면 코드 수준에서 처리하는 방법을 자세하게 볼 수 있구요.

기본 개념을 말씀드리면, 이미지를 네트워크 같은데서 다운로드 받으면 bitmap을 같이 사이즈가 큰 이미지 파일을 받게 될 가능성이 많습니다. 이걸 모바일에서 바로 메모리로 읽어들여 처리하면 메모리 사이즈 관계로 에러가 나게 됩니다. 따라서 scale down 기법을 통하여 비트맵을 비유를 유지한채로 사이즈를 줄이게 되고 이걸 디스크에 저장하게 됩니다.

디스크에 저장할 때는, 모바일 디바이스의 스토리지가 충분한지 체크해야 겠죠. 이렇게 저장된 이미지는 앱이 동작하는 동안 변경 일정 시간 범위 안에 같은 이미지를 요청할 경우, 디스크에 저장된 이미지를 가져와 보여주게 됩니다. 물론 이 부분도 커스터마이즈가 가능합니다.

그리고 네트워크 처리가 가능해야 하기 때문에 쓰레딩 처리를 하고 라이프 사이클에 따라 네트워크 호출을 취소하는 등의 처리도 해주어야 하고, 이미지를 다운로드 받지 못했을 때의 에러처리 등도 해주어야 하는 등 처리할 것이 생각보다 많습니다.

https://developer.android.com/topic/performance/graphics/load-bitmap
https://developer.android.com/topic/performance/graphics/cache-bitmap
https://developer.android.com/topic/performance/graphics/manage-memory
spark (227,470 포인트) 님이 2022년 12월 12일 답변
...