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

Glide를 사용하여도 Gridview 이미지 불러오는 속도가느립니다. 개선하려면어떻게해야하나요ㅜ

0 추천
불러오는속도가 너무느립니다..

 

 

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.gallery_list);

  // 파일정보넘기기위해 main에서 intent값 전달받음.
  Intent intent = getIntent();
  user_id = intent.getStringExtra("user_id");
  user_no = intent.getStringExtra("user_no");
  bo_table = intent.getStringExtra("bo_table");

  progress = (ProgressBar) findViewById(R.id.web_progress);
  mThumbImageInfoList = new ArrayList<GalleryItem>();
  mGvImageList = (GridView) findViewById(R.id.gvImageList);
  ListActivity = GalleryListMain.this;
  

//이미지 불러오는 함수
  findThumbList();
  updateUI();
  //new DoFindImageList().execute();
 }

 

 private void updateUI() {
  mListAdapter = new ImageAdapter(this, R.layout.gallery_cell,
    mThumbImageInfoList);
  mGvImageList.setAdapter(mListAdapter);
 }

 private long findThumbList() {
  long returnValue = 0;
  long returnValues = 0;
  // Select 하고자 하는 컬럼

  String[] projection2 = {  MediaStore.Images.Thumbnails._ID,
    MediaStore.Images.Thumbnails.DATA };

  // 썸네일 이미지 불러

  // 이미지편집으로 넘길 이미지쿼리F

  Cursor imageCursor = managedQuery(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection2,
    null, null, MediaStore.Images.Media.DATE_ADDED + " desc ");

  if (imageCursor != null && imageCursor.getCount() > 0) {
   // 컬럼 인덱스
   int imageIDCol = imageCursor
     .getColumnIndex(MediaStore.Images.Media._ID);
   int imageDataCol = imageCursor
     .getColumnIndex(MediaStore.Images.Thumbnails.DATA);

   int imageDataCol2 = imageCursor
     .getColumnIndex(MediaStore.Images.Media.DATA);

   // 커서에서 이미지의 ID와 경로명을 가져와서 ThumbImageInfo 모델 클래스를 생성해서
   // 리스트에 더해준다.

   while (imageCursor.moveToNext()) {
    GalleryItem thumbInfo = new GalleryItem();

    thumbInfo.setId(imageCursor.getString(imageIDCol));
    thumbInfo.setData(imageCursor.getString(imageDataCol));
    thumbInfo.setData2(imageCursor.getString(imageDataCol));
    
    //원본을 썸네일로바꿔서가져오는 함수만들어서사용
    String path = getThumnailPath(getApplicationContext(),imageCursor.getString(imageDataCol));
    thumbInfo.setPath(path);

    BitmapFactory.Options option = new BitmapFactory.Options();

    Bitmap bmp = BitmapFactory.decodeFile(path, option);

    thumbInfo.setBitmap(bmp);

    thumbInfo.setCheckedState(false);

    mThumbImageInfoList.add(thumbInfo);

    returnValue++;
   }

  }
  // 이거 리쥼시 오류떠서주석처리해버림!
  // imageCursor.close();
  return returnValue;

 }

glide와 원본의 썸네일로 불러와도 느립니다..
glide로 이미지 불러오는 부분추가입니다.

Glide.with(mContext).load(mArrData.get(position).getData())
     .into(holder.ivImage);
카카오스토리나 다른앱의경우 바로뜨는데.. 저는  500장정도가 1분정도걸리는것같습니다
익명사용자 님이 2015년 12월 9일 질문
2015년 12월 9일 수정

1개의 답변

0 추천
여러가지 이유가 있을 수 있겠습니다.

다른 상황을 알지 못하는 입장에서 그냥 대충 짐작만 해보자면,

1. 서버의 응답이 늦다. 이 경우는 이미지 로더의 문제가 아닌거죠. 서버를 바꿔야 합니다.

2. 500장을 한번에 읽나? 한 화면에 보여지는 것들만 처리해야죠

3. Glide만 쓰기보다는 Volley + Glide를 쓴다. 제 경험상 이미지를 가져오는 데에는 Volley가 약간 더 빠른 것 같습니다. 가져온 이미지는 Glide로 보여주더라도 갖고오는 부분은 Volley로 하면 약간의 속도 향상은 있을 겁니다

 

1, 2번에 해당하는 문제가 있다면 3번은 쓰나마나입니다. 큰 속도저하가 있는데, 약간의 속도향상 정도는 있으나마나기 때문이죠.

 

1대 혹은 몇 대의 서버를 쓰면서 카톡이나 네이버 등과 동급 비교를 하는 건 무리가 있습니다. 엄청난 장비들을 동원해서 빠른 응답속도를 보이는 그곳과 그냥 일반 랜에 PC 혹은 서버로 처리하는 곳이 동일한 결과를 보이면 그게 더 이상한 거죠
cc1232 (35,280 포인트) 님이 2015년 12월 9일 답변
...