2016-11-07 1 views
1

피카소를 사용하여 5 개의 이미지를로드하고 있습니다. 우선 이미지 높이를 정사각형 이미지 뷰로 사용하는 내 화면 너비와 일치하도록 이미지의 크기를 조정하고 나서 centercrop을 호출합니다. 그것은 현실과 또한 알파 채널을 제거하지만, 심지어 85메가바이트 모든이 내 기억 인상 후 이미지가 서버에서 다운로드되고있다 보면 아래 이미지가 메모리 사용량을 보여주는 여기Picasso 안드로이드 메모리 문제

      Picasso.with(context) 
         .load(sale.getImage()) 
         .config(Bitmap.Config.RGB_565) 
         .centerCrop() 
         .resize((int) Utils.convertDpToPixel((int) Utils.getScreenWidth(context)), (int) Utils.convertDpToPixel((int) Utils.getScreenWidth(context))) 
         .into(viewHolder.img_image, new Callback() { 
          @Override 
          public void onSuccess() { 

          } 

          @Override 
          public void onError() { 
           viewHolder.img_image.setVisibility(View.GONE); 
           viewHolder.img_image.destroyDrawingCache(); 
          } 
         }); 
      } 

을 사용하고있는 코드는 enter image description here

내가 알아챈 또 하나의 점은 Picasso가 사용 후 메모리를 지우지 않는다는 것입니다. ws는 20MB를 사용하고 있지만 Android Studio에서 GC을 호출하면 메모리가 약 8MB로 떨어집니다. 제가 이것에 대해 할 일이 있습니까?

답변

2

GC으로 전화를 걸었으며 메모리가 최소값을 유지합니까? 이것은 사용 된 비트 맵에 대한 강력한 참조가 없다는 것을 의미합니다. 모든 것이 OK입니다..

큰 이미지를 비트 맵으로 디코딩하면 메모리 사용량이 많이 발생합니다. 비트 맵 형식은 꽤 무겁습니다. 이것에 대해 할 일이 없습니다. 결과 이미지의 해상도를 낮추는 것이 좋습니다.

+0

나는 'GC'에 대해 알고있다. –

관련 문제