0

유니버설 이미지 로더 라이브러리를 사용하는 데 문제가 있습니다. 아쉽게도 라이브러리는 응용 프로그램의 메모리 사용량을 많이 발생시킵니다.UniversalImageLoader의 메모리 사용량이 많습니다.

나는 ListView 대신 ScrollView를 사용하는 이유로 ScrollView를 가지고 있는데, 대부분 사용자 지정 삽입 및 항목 선택 애니메이션과 관련이 있습니다. 사용자 지정보기 약 보유. 이러한 사용자 정의보기 각각은 ImageView뿐만 아니라 일부 TextView로 구성됩니다. 지금 여기

그리고이 일이 다음 ImageViews에 dispalyed

이미지는 인터넷에서 다운로드 한 모든 주변 100~150킬로바이트 (치수 × 320 640) 각이있다. UniversalImageLoader를 사용하여 이미지를 다운로드하면 내 응용 프로그램이 약 80Mb 개의 메모리를 사용하기 때문에 OutOfMemoryException과 충돌합니다.

나는 이미지를 다운로드, 그냥 1천2백킬로바이트 (크기 1920 × 1080) 사용자 지정보기 당의 크기에 하드 코딩 된 이미지에 넣지 않으면

, 내 응용 프로그램은 단지 약 를 40Mb 메모리의를 소모한다.

을 다운로드 할 때 UniversalImageLoader를 잘못 사용하면 어떻게됩니까? 이미지가 내 앱의 메모리를 두 배나 많이 사용하게됩니까?

캐싱 메커니즘을 모두 비활성화했지만 문제가 여전히 발생합니다.

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(c) 
     .build(); 

ImageLoader.getInstance().init(config); 

DisplayImageOptions options = new DisplayImageOptions.Builder() 
     .showStubImage(R.drawable.loading) 
     .showImageForEmptyUri(R.drawable.loading) 
     .showImageOnFail(R.drawable.loading) 
     .cacheInMemory(false) 
     .cacheOnDisc(false) 
     .imageScaleType(ImageScaleType.IN_SAMPLE_INT) // default 
     .build(); 

그리고 코드

, 나는 다음과 같이 호출 : 내가 잘못 뭐하는 거지

ImageLoader im = ImageLoader.getInstance(); 
im.displayImage("myurl", myimageview, options); 

내 UniversalImageLoader 설정은 다음

입니까? 왜 UniversalImageLoader는 많은 양의 메모리를 사용합니까? 다른 모든 거기에 사람들이 갖는 동일한 문제에 대해서는

+0

이미지와 관련된 파일 크기는 메모리 크기와 다를 수 있습니다. 귀하의 100-150KB 숫자가 파일 크기 (압축 됨)를 나타내는 것으로 추측합니다. – kabuko

+0

예, 예를 들어 컴퓨터의 브라우저를 통해 파일을 다운로드하면 모두 100에서 150KB 사이입니다. 그래서 나는 왜 100-150KB 이미지가 1200Kb 이미지보다 더 많은 메모리를 사용하는지 알지 못한다.ImageLoader와 그 캐싱과 관련이 있어야합니다. –

+0

다시 압축하면 ... 픽셀 크기가 중요합니다. – kabuko

답변

0

는 :

https://github.com/nostra13/Android-Universal-Image-Loader#useful-info

:

내 메모리 사용을 최소화하고 다음 지침에 따라에서 OutOfMemoryException 제거 관리

나를 위해 가장 중요한 부분은 ThreadPoolSize를 2로 줄이는 것이 었습니다. 나는 할 수 없었습니다. 설정 후에 성능 변화를 느껴보십시오.

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(c) 
.threadPoolSize(2) 
.build(); 

DisplayImageOptions options = new DisplayImageOptions.Builder() 

// other options 

.bitmapConfig(Bitmap.Config.RGB_565) 
.imageScaleType(ImageScaleType.EXACTLY) 

// other options 
.build(); 

이 내 응용 프로그램에 대한 35 %의 메모리 사용량을 총 감소.

관련 문제