본문 바로가기
Android

Glide

by Diane_KIM 2023. 8. 30.

Google이 개발했으며, 이미지를 빠르고 효율적으로 불러올 수 있게 도와주며 이용자가 쉽게 만든 라이브러리

https://github.com/bumptech/glide

 

다음과 같이 고려해야할 사항들을 대신 처리해줌

실패처리, 디코딩, 이미지 재활용, OOM,  캐시 및 병렬 처리

 

이미지 캐싱

Glide는 기본적으로 메모리 & 디스크에 이미지를 캐싱하여 다음번엔 빠른 이미지 로딩을 지원한다.

Glide는 이미지를 불러오기 위해 다음과 같은 절차로 여러 캐시를 확인한다.

  1.  Active resources - 현재 이 이미지가 다른 뷰에 나타나는가?
  2. Memory cache - 이 이미지가 최근에 메모리에 로드외었거나, 여전히 메모리에 남아있는가?
  3. Resource - 이 이미지가 예전에 디코드되었거나, 변형되었거나, 디스크 캐시에 기록되었는가?
  4. 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