마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

UIL 로 이미지 로드 시, 속도와 메모리 문제..ㅠ

0 추천

안녕하세요. UIL을 사용해서 로컬 이미지를 앱에 뿌려주고 있는데요...

로딩이 느리고,, 너무 적은 양의 사진만 캐쉬?에 저장이 되는 것 같습니다.

그래서

1) 스크롤을 조금만 내렸다 올리면 이미 로딩된 사진들도 다시 로딩을 하는데

   더 많은 사진을 캐쉬에 저장하려면 어떤 옵션을 건드려야하는지 아시는분 계신가요?

 

2) 카톡, 텔레그램 및 여타의 SNS를 보면 이미지 로딩속도가 굉장히 빠릅니다.

   저는 로컬이미지를 가져오는데 왜이렇게 느린 느낌이 들까요??;;빠르게 하고 싶어요..

 

 

관련된 config, option 실제 이미지 로드르 하는 부분을 코드로 적어드리니..

도움 부탁드립니다. UIL을 사용하시는 분들은 어떻게 사용하고 계신지 궁금하네요..

 

config 설정( 어떤 분이 본인의 설정코드를 답글로 달아주셔서..적용했습니다.)

public static final int MEMORY_CACHE_LIMIT_VENUE = 1024 * 1024 * 12;
public static final int DISK_CACHE_LIMIT_VENUE = 1024 * 1024 * 128;

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .threadPoolSize(2)
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .diskCacheSize(DISK_CACHE_LIMIT_VENUE)
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs()
                .memoryCache(memoryCache)
                .build();

        ImageLoader.getInstance().init(config);

 

 

option설정

this.options = new DisplayImageOptions.Builder()
                    .resetViewBeforeLoading(false)
                    .showImageOnLoading(R.drawable.ic_photo_loading_white_24dp)
                    .showImageForEmptyUri(R.drawable.ic_photo_empty_white_24dp)
                    .showImageOnFail(R.drawable.ic_photo_fail_white_24dp)
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .considerExifParams(false) //사진이미지의 회전률 고려여부
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();

 

 

실제 이미지를 로드하는 부분(어댑터의 getView 메서드)

public class GalleryAdapter extends BaseAdapter {

....


public View getView(int position, View convertView, ViewGroup parent) {

....

ImageLoader.getInstance().displayImage(mThumbPaths[position], gridViewHolder.imageView, options, new SimpleImageLoadingListener() {.....});

....
}

 

치솟음 (3,710 포인트) 님이 2016년 1월 18일 질문

1개의 답변

+1 추천
 
채택된 답변
먼저 스레드 사이즈를 늘려 주시고요. .threadPoolSize(10)

원본 이미지가 작아야 합니다. 기본 카톡 이미지의 경우 리스트에서 110*110사이즈이고요 큰이미지는 480*480입니다.

이외에는 소스상에는 문제가 없습니다.
판진 (800 포인트) 님이 2016년 1월 19일 답변
치솟음님이 2016년 1월 20일 채택됨
아아...우선 답변 너무 감사드립니다. 메모리라 디스크사이즈말고 쓰레드 사이즈도 늘려줘야하는거군요...

근데 애초에 원본이미지가 큰건 어떻게 줄여야하나요?
UIL의 기능으로 줄일 수 있는건가요? 검색해봐야겠어요~
UIL 로컬 이미지 로딩 속도..
...