2010-04-26 14 views
1

웹 서비스에서 이미지 및 텍스트 목록을 검색하려고합니다. 먼저 Simple Adapter를 사용하여 이미지를 목록으로 가져 오도록 코딩했습니다. 이미지는 메모리 부족 오류

final ImageView imageView = (ImageView) rowView.findViewById(R.id.image); 
     AsyncImageLoaderv asyncImageLoader=new AsyncImageLoaderv(); 
     Bitmap cachedImage = asyncImageLoader.loadDrawable(imgPath, new AsyncImageLoaderv.ImageCallback() { 
      public void imageLoaded(Bitmap imageDrawable, String imageUrl) { 

       imageView.setImageBitmap(imageDrawable); 
      } 
      }); 
     imageView.setImageBitmap(cachedImage); 

이미지를로드하려면 ...
04-26 10:55:39.483: ERROR/dalvikvm-heap(1047): 8850-byte external allocation too large for this process. 
04-26 10:55:39.493: ERROR/(1047): VM won't let us allocate 8850 bytes 
04-26 10:55:39.563: ERROR/AndroidRuntime(1047): Uncaught handler: thread Thread-96 exiting due to uncaught exception 
04-26 10:55:39.573: ERROR/AndroidRuntime(1047): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
04-26 10:55:39.573: ERROR/AndroidRuntime(1047):  at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
04-26 10:55:39.573: ERROR/AndroidRuntime(1047):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:451) 
04-26 10:55:39.573: ERROR/AndroidRuntime(1047):  at com.stellent.gorinka.AsyncImageLoaderv.loadImageFromUrl(AsyncImageLoaderv.java:57) 
04-26 10:55:39.573: ERROR/AndroidRuntime(1047):  at com.stellent.gorinka.AsyncImageLoaderv$2.run(AsyncImageLoaderv.java:41) 
04-26 10:55:40.393: ERROR/dalvikvm-heap(1047): 14600-byte external allocation too large for this process. 
04-26 10:55:40.403: ERROR/(1047): VM won't let us allocate 14600 bytes 
04-26 10:55:40.493: ERROR/AndroidRuntime(1047): Uncaught handler: thread Thread-93 exiting due to uncaught exception 
04-26 10:55:40.493: ERROR/AndroidRuntime(1047): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
04-26 10:55:40.493: ERROR/AndroidRuntime(1047):  at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
04-26 10:55:40.493: ERROR/AndroidRuntime(1047):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:451) 
04-26 10:55:40.493: ERROR/AndroidRuntime(1047):  at com.stellent.gorinka.AsyncImageLoaderv.loadImageFromUrl(AsyncImageLoaderv.java:57) 
04-26 10:55:40.493: ERROR/AndroidRuntime(1047):  at com.stellent.gorinka.AsyncImageLoaderv$2.run(AsyncImageLoaderv.java:41) 
04-26 10:55:40.594: INFO/Process(584): Sending signal. PID: 1047 SIG: 3 

여기 어댑터의 코드의 ... 응용 프로그램에 오류가 표시되고 로그 캣에 다음과 같은 오류가 발생할 표시 얻고있다. ..

public static Bitmap loadImageFromUrl(String url) { 
      InputStream inputStream;Bitmap b; 
     try { 

      inputStream = (InputStream) new URL(url).getContent(); 
      BitmapFactory.Options bpo= new BitmapFactory.Options(); 
      bpo.inSampleSize=2; 
      b=BitmapFactory.decodeStream(inputStream, null,bpo); 
      return b; 
     } catch (IOException e) { 
       throw new RuntimeException(e); 
      } 
      //return null; 
    } 

.... 어떻게 오류를 수정하는

+0

이 링크에 코드를 구현해야합니다. http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object – AnilPatel

답변

1

을 알려주세요 당신은 OOM 오류를 얻고있다 벡 비트 맵이 너무 많은 메모리를 차지하고 있습니다. 도움이되는지 확인하려면 Handling large Bitmaps을 참조하십시오. 원본 크기의 절반으로 이미지를 샘플링하면 여전히 런타임에 너무 큰 이미지가 생성 될 수 있습니다.

+0

나는이 방법을 시도했다. 앱이 원활하게 실행되지만 메모리에 대한 오류를 여러 번 표시하는 오류가 발생합니다 ... –