Android 이미지 로드 라이브러리는 느린 로드 문제를 어떻게 해결하나요?

3288 단어 android
저는 Amit Shekhar , 개발자들이 고임금 기술직을 구하도록 돕는 멘토입니다.

이 블로그에서는 Android Image Loading 라이브러리가 이미지의 느린 로딩 문제를 해결하는 방법을 알아봅니다.

이 문서는 원래 amitshekhar.me에 게시되었습니다.

더 나은 사용자 경험을 위해서는 이미지를 빠르게 로드하는 것이 매우 중요합니다. 우리는 후드 아래에서 어떻게 수행되는지 배워야 합니다.

이러한 개념은 Android 인터뷰와 관련하여 중요합니다.

그래서 Glide , Fresco 등과 같은 Android의 다양한 Image Loading 라이브러리의 소스 코드를 읽고 있었습니다.

이 라이브러리는 우리를 위해 내부적으로 많은 작업을 수행하므로 우리는 라이브러리를 사용하고 작업을 쉽게 완료할 수 있습니다. 그들은 우리의 삶을 더 쉽게 만듭니다.

그들이 하는 일 중 하나는 가능한 한 빨리 이미지를 로드하는 것입니다.

Android Image Loading 라이브러리가 이미지를 빠르게 로드하는 방법을 알아보겠습니다.

느린 로딩은 비트맵을 뷰에 로딩할 때 또 다른 문제입니다. 느린 로딩의 주된 이유 중 하나는 뷰가 창 밖에 있거나 해당 작업이 더 이상 필요하지 않은 경우에도 다운로드 또는 비트맵 디코딩과 같은 작업을 취소하지 않기 때문입니다. 필요하지는 않지만 창에 방금 들어온 실제 이미지를 로드하는 데 시간이 걸립니다.
GlideFresco와 같은 이미지 로드 라이브러리는 이를 처리하고 모든 작업을 적절하게 취소하고 사용자에게 표시되는 이미지만 로드합니다.

이러한 라이브러리는 활동 및 프래그먼트 수명 주기를 인식하므로 어떤 이미지 다운로드 또는 비트맵 디코딩 작업을 취소해야 하는지 알 수 있습니다.

그들이 활동 및 프래그먼트 수명 주기를 어떻게 인식하는지 생각해야 합니다. Glide 의 예를 들어 설명하겠습니다.

다음과 같이 Glide를 사용합니다.

Glide.with(fragment)
    .load(url)
    .into(imageView);


여기에서 프래그먼트를 전달하고 있음을 알 수 있습니다. 이렇게 하면Glide 프래그먼트의 수명 주기 이벤트를 구독합니다. 마찬가지로 액티비티와 뷰에서도 발생합니다.

이것이 적절한 시간에 더 이상 필요하지 않은 작업을 취소하여 느린 이미지 로딩 문제를 해결하는 방법입니다. 이러한 라이브러리가 수행하는 또 다른 기능은 두 가지 수준에서 이미지를 캐시한다는 것입니다. 그것에 대해서도 알아봅시다.

디코딩에 시간이 걸리므로 이미지를 반복해서 디코딩할 필요가 없도록 메모리 캐시를 만듭니다. 이러한 라이브러리는 비트맵을 포착하기 위해 일부 구성 가능한 크기의 캐시를 생성합니다.

두 가지 수준의 캐싱을 유지합니다.
  • 메모리 캐시
  • 디스크 캐시

  • 라이브러리에 URL을 제공하면 라이브러리는 다음을 수행합니다.
  • 해당 URL 키가 있는 이미지를 메모리 캐시에서 사용할 수 있는지 여부를 확인합니다.
  • 메모리 캐시에 있는 경우 메모리 캐시에서 가져와서 비트맵만 표시합니다.
  • 메모리 캐시에 없으면 디스크 캐시를 체크인합니다.
  • 디스크 캐시에 있는 경우 디스크에서 비트맵을 로드하고 메모리 캐시에 넣은 다음 비트맵을 보기로 로드합니다.
  • 디스크 캐시에 없는 경우 네트워크에서 이미지를 다운로드하여 디스크 캐시에 넣고 메모리 캐시에도 넣은 다음 비트맵을 뷰에 로드합니다.

  • 이렇게 하면 메모리 캐시에서 직접 표시하는 것이 항상 더 빨라지므로 로딩 속도가 빨라집니다.

    따라서 주로 다음 두 가지 작업을 수행합니다.
  • 더 이상 필요하지 않은 작업을 적절한 시간에 취소합니다.
  • 두 가지 수준에서 이미지를 캐시합니다.

  • 이것은 Android Image Loading 라이브러리가 이미지의 느린 로딩 문제를 해결하는 방법에 관한 것입니다.

    다음 블로그 게시물에서 이러한 라이브러리가 수행하는 작업에 대해 자세히 알아볼 것입니다.

    지금은 그게 다입니다.

    감사

    Amit Shekhar

    다음에서 나와 연결할 수 있습니다.


  • GitHub
  • Facebook
  • 좋은 웹페이지 즐겨찾기