Google이 개발했으며, 이미지를 빠르고 효율적으로 불러올 수 있게 도와주며 이용자가 쉽게 만든 라이브러리
https://github.com/bumptech/glide
다음과 같이 고려해야할 사항들을 대신 처리해줌
실패처리, 디코딩, 이미지 재활용, OOM, 캐시 및 병렬 처리
이미지 캐싱
Glide는 기본적으로 메모리 & 디스크에 이미지를 캐싱하여 다음번엔 빠른 이미지 로딩을 지원한다.
Glide는 이미지를 불러오기 위해 다음과 같은 절차로 여러 캐시를 확인한다.
- Active resources - 현재 이 이미지가 다른 뷰에 나타나는가?
- Memory cache - 이 이미지가 최근에 메모리에 로드외었거나, 여전히 메모리에 남아있는가?
- Resource - 이 이미지가 예전에 디코드되었거나, 변형되었거나, 디스크 캐시에 기록되었는가?
- Data - 이 이미지가 이전에 디스크 캐시에 기록되었던 데이터였는가?
메모리 캐시
기본적으로 메모리 캐싱을 하기 때문에, 메모리 캐싱을 위해 추가적으로 할 일은 없다.
단, URL 이미지 로딩 시 한번 로드한 이미지는 chache에 저장되어 서버에서 해당 이미지를 변경해도 App 이미지는 갱신되지 않는다.
이런 경우, skipMemoryCache(true)로 메모리 캐시를 사용하지 않을 수 있다.
final String url = "https://github.com/bumptech/glide/raw/master/static/glide_logo.png";
Glide.with(this)
.load(url)
.skipMemoryCache(true)
.into(imageView);
디스크 캐시
기본적으로 디스크 캐싱을 수행하며, 기본적인 개념은 메모리 캐시와 같다.
하단과 같은 diskCacheStrategy 를 지원한다.
- DiskCacheStrategy.ALL : 모든 이미지를 캐싱.
- DiskCacheStrategy.AUTOMATIC : RESOURCE 를 기반으로 전략적인 캐싱. (Default)
- DiskCacheStrategy.DATA : 원본 이미지만 캐싱.
- DiskCacheStrategy.RESOURCE : 해상도를 줄인 이미지만 캐싱
- DiskCacheStrategy.NONE : 디스크 캐싱 안 함
메모리 캐싱과 별개로, 둘다 사용하지 않을 경우 다음과 같이 설정
final String url = "https://github.com/bumptech/glide/raw/master/static/glide_logo.png";
Glide
.with(this)
.load(url)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
Thumbnail
요청받은 이미지가 나타나기 전까지 지정한 thumbnail 을 보여준다.
하단과 같이 0.1f 로 지정했다면 실제 이미지 크기중 10% 크기의 thumbnail 이 생성된다.
final String url = "https://i.pinimg.com/originals/cd/70/31/cd703116816d275e957dc18ffead1779.jpg";
Glide
.with(this)
.load(url)
.thumbnail(0.1f)
.into(imageView);
'Android' 카테고리의 다른 글
Flow 개념 (0) | 2023.08.30 |
---|---|
코루틴 (0) | 2023.08.30 |
Case of Fragment Memory Leak (2) | 2023.08.30 |
Room DB에서 Flow를 사용하여 DB 변경 observing (0) | 2023.08.30 |
런타임에서 앱 아이콘 변경 (0) | 2023.08.30 |