logo
logo
모바일
Glide
안드로이드에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리
StackOverflow 질문 수: 2337
Github Stars : ★ 34656
사용 기업
패션
직장
푸드테크
헬스케어
이커머스
부동산/인테리어
기타
여행
종합
금융/보험
소셜/컨텐츠
techstack-logo
딜리셔스
techstack-logo
드라마앤컴퍼니
techstack-logo
마켓컬리
techstack-logo
비브로스
techstack-logo
버드뷰
techstack-logo
우아한형제들
techstack-logo
쿠팡
techstack-logo
버킷플레이스
techstack-logo
엠큐닉
techstack-logo
프립
techstack-logo
엔라이즈
techstack-logo
유니크굿컴퍼니
techstack-logo
카카오스타일
techstack-logo
SK플래닛
techstack-logo
피플펀드컴퍼니
techstack-logo
티웨이브
techstack-logo
네이버웹툰
techstack-logo
카카오뱅크
더 보기
기술 블로그 글
마이리얼트립
Android WebView를 사용한 효과적인 대용량 이미지 로딩
유네스코 세계문화유산인 나스카 지상화는 그 크기가 최대 300m에 달합니다. 이렇게 거대한 이미지를 Android에서 원본 그대로 불러오기 위해서는 어떤 방법이 효과적일까요?Android 개발자에게 대용량의 이미지를 효율적으로 다루는 일은 항상 흥미로운 주제입니다. 일반적으로 앱 메모리를 가장 많이 차지하는 데이터가 이미지이고 Android는 앱에 제한적인 메모리만 할당하기 때문에 예로부터 Android 개발자는 세심하게 이미지를 다루는 것을 중요한 덕목으로 평가받았습니다. Glide와 같이 훌륭한 이미지 로딩 라이브러리가 보편화된 요즘에도 대용량 이미지로 인한 OOM 크래쉬 리포트를 받아본 경험은 아마 대부분 있을거라고 생각됩니다. Glide는 기본적으로 이미지를 표시할 ImageView의 크기로 Bitmap을 생성하여 메모리를 확보하려고 시도하지만, 원본 사이즈의 이미지가 로딩되어야 하는 상황이라면 할당된 메모리의 한계를 초과해버릴 수 있습니다. 메모리는 유한한 자원이고 제대로 관리해주지 않는다면 우리 앱은 유한한 자원을 무한히 소비하려고 시도합니다. 이런 경우 어김없이 OOM 선생님을 만나게 되는데요 이 글에서는 대용량 이미지의 원본을 효과적으로 표시하기 위해 좋은 대안이 될 수 있는 WebView와 WebView를 ImageView처럼 사용 할 수 있도록 도와주는 마이리얼트립의 오픈소스 라이브러리 Nasca. 그리고 WebView와 ImageView의 이미지 표시 성능 비교 자료에 대해 공유해보려고 합니다.Android에서 앱당 할당되는 최대 메모리 사이즈는 기기 설정에 따라 다릅니다. 공식 문서에서 Baseline은 16MB이고 더 많은 메모리를 장착한 일부 기기에서는 24MB나 그 이상이 될 수도 있다고 소개를 하고 있는데 이 부분은 Android를 개발한 지 얼마 안 된 분들에겐 의아해할 수 있을 만합니다. 16MB라면 고화질 이미지 한 장으로도 이미 초과해버릴 만한 작은 사이즈인데요. Android 개발이 태동하던 2010년 즈음에는 그런 말도 안 되는 작은 사이즈의 메모리를 가지고 개발을 했습니다.2012년 주요 기기의 앱당 최대 메모리 사이즈갤럭시S: 64MB넥서스S: 32MB소니 엑스페리아 X10: 24MBHTC 디자이어HD: 32MB실화입니다.다행히 요즘은 기기 성능이 많이 좋아져서 보다 여유 있는 메모리 사이즈를 확보 할 수 있습니다. 그 값은 여전히 기기마다 다른 설정으로 각각 아래와 같은 방법으로 확인 할 수 있습니다.제가 사용하고 있는 V50 기기에서 확인한 결과 앱당 최대 메모리사이즈는 256MB LargeHeap 옵션이 사용될 경우에는 512MB로 확인됩니다. 그러면 Android가 사용하는 Bitmap 이미지는 메모리를 얼마나 사용할까요?모바일에서 주로 사용하는 jpg, png, gif 등 이미지는 압축된 포맷을 사용합니다. 하지만 Android에서 사용하는 Bitmap은 압축된 포맷이 아닙니다. 압축되지 않은 탓에 압축을 풀 때 사용되는 시간과 CPU리소스를 아낄수 있지만 대신 많은 메모리를 소비합니다
glide
Copyright © 2024. Codenary All Rights Reserved.